- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个我编写的小 exe,它使用 LibGit2Sharp
并尝试使用 Costura.Fody
来嵌入所有内容,所以我只有一个 exe 可以分发(实际上,还有两个配置文件,但没关系。
问题似乎是 LibGet2Sharp.dll
对 git2-1196807.dll
有相当明确的引用,我似乎无法弄清楚如何嵌入后者在前者可以使用的方式。我已经尝试了几件事,但我认为我最好的尝试是:
所有这些 .dll 都从解决方案的 packages
文件夹中复制并设置为 Build Action = Embedded Resource
和 Copy to Output Directory = Do Not Copy
.
LibGit2Sharp 引用设置为 Copy Local = false
,我已经尝试了 FodyWeavers.xml 中的简单路径:
<?xml version="1.0" encoding="utf-8" ?>
<Weavers>
<Costura>
</Costura>
</Weavers>
更复杂的是:
<?xml version="1.0" encoding="utf-8" ?>
<Weavers>
<Costura>
<Unmanaged64Assemblies>
Costura64\LibGit2Sharp
Costura64\git2-1196807
</Unmanaged64Assemblies>
<Unmanaged32Assemblies>
Costura32\LibGit2Sharp
Costura32\git2-1196807
</Unmanaged32Assemblies>
</Costura>
</Weavers>
但是,我总是报错,不是在打开exe的时候,而是在点击最先使用git库的按钮的时候:
...'LibGit2Sharp.Core.NativeMethods' threw an exception. ---> System.DllNotFoundException: Unable to load DLL 'git2-1196807': The specified module could not be found. (Exception from HRESULT: 0x8007007E)...
我做的一些事情给了我一个错误,即 LibGet2Sharp
dll 是不可访问的(而不是关于 git2-1196807
的错误),但我认为那是就在我使 Fody 瘫痪的时候。
如果您能提供任何建议,我将不胜感激;这让我感到困惑。如果我将 git2-1196807.dll
文件放在部署位置“.\lib\win32\x86”和 64 位等效文件中,那么它运行良好,但这与使用 costura.fody 的意义不符.
想法?
最佳答案
在 this question 的帮助下解决了这个问题并且不得不添加一些我自己的作品。
基本上,您需要在项目中创建一对文件夹,分别称为 Costura32 和 Costura64,并将相应版本的 dll 放在那里,并将它们设置为“嵌入式资源”。然后编织者可以在构建解决方案时将它们包含在 exe 中。
在我的例子中,我使用的是 LibGit2Sharp dll,它依赖于 git2-15e1193.dll,所以我将其作为我的解决方案的一部分:
对于每个 dll,我都将构建操作设置为嵌入式资源:
最后,FodyWeavers.xml 是:
<?xml version="1.0" encoding="utf-8" ?>
<Weavers>
<costura IncludeDebugSymbls='false'>
<Unmanaged32Assemblies>
git2-15e1193
</Unmanaged32Assemblies>
<Unmanaged64Assemblies>
git2-15e1193
</Unmanaged64Assemblies>
</costura>
</Weavers>
确保在 FodyWeavers.xml 文件中的 dll 名称中保留 .dll。
关于c# - costura.fody 用于引用另一个 dll 的 dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47079595/
有什么方法可以配置 fody 不检查设置为属性的值 - 我遇到值相同的情况并且我想要设置属性,因为我在未调用的属性 setter 中有额外的逻辑。 最佳答案 这显然是在最初问题之后的几年,但供将来引用
我在我的解决方案中成功使用了 Fody 和 Fody.PropertyChanged NuGet 包,直到我安装另一个包并看到我们有可用于前面提到的那些包的更新。更新后,以下错误阻止我构建解决方案。
** 这是 Visual Studio 2013 中的一个问题。 我得到的错误是巨大的而且大部分是无用的,但它的关键是 Error 130 Fody: Could not load 'Module
创建面向.net 4.5.1的winform项目 安装包PropertyChanged.Fody [ImplementPropertyChanged] public class PersonFody
创建面向.net 4.5.1的winform项目 安装包PropertyChanged.Fody [ImplementPropertyChanged] public class PersonFody
有没有办法禁用Fody Costura?我需要执行一些故障排除,并且我想知道Fody Costura不是问题的一部分。我宁愿禁用它而不是删除nuget,这是一种解决方案。 从Fody配置中删除会产生以
我使用的 Fody Nuget 包如下 安装包 PM> Install-Package MethodDecorator.Fody 装饰方法 public class BusinessLayerClas
在已实现该属性的项目之外的方法上使用实现 Fody 编织器的属性时,我无法拦截方法连接点。 我在一个项目中实现了 MethodDecorator.Fody 编织器,但是当我尝试将属性添加到项目外的任何
我们在一些 .NET 项目中使用 Stamp.Fody 包,它们有时会间歇性地失败构建并出现以下错误:Fody:无法在 1 秒内将产品版本应用于 Win32 资源。 显然 1第二个是默认超时,如果 v
如何使用Fody拦截从模型到ViewModel? 我尝试将其放入ViewModel中,但没有任何 react ,我是否缺少任何东西? 我正在使用Xamarin形式, Prism 模型 publi
英文翻译: 我在 VisualStudio 环境中为我的项目安装了 SplashScreen.Fody 包,用户指南是将 WPF UserControl 添加到生成用于创建和管理 SplashScre
我正在处理一个 WPF 项目。为了防止出现大量锅炉代码,我使用了 Fody PropertyChanged。这是我的问题的一个片段: [ImplementPropertyChanged] public
最近我遇到了一个用于修改 .NET 程序集的 NuGet 包,特别是有一个用于 Fody 包的 Costura NuGet“插件”,它在 C# 编译器完成后合并程序集。 我找不到对 .csproj 文
首先:我是一个完全的初学者。我在一个解决方案中有两个项目。一个项目是控制台应用程序,它是从 Windows 窗体应用程序调用的。现在我想将它们添加到一个可执行文件中。有人告诉我 Fody/Costur
有没有Fody的痕迹,或其依赖项(引用),在最终编织的程序集中? 最佳答案 所以这真的应该是几个问题 Fody 是否在最终组装中留下任何引用资料? No Fody 不需要任何引用,也不会在 ILWea
我在 WPF (PropertyChanged) 中有一个非常简单的项目 - 一个 View 、一个 View 模型和一个模型。在这个项目中,我使用包 PropertyChanged.Fody。当我想
我的一位 friend 向我提出了一项挑战,要求我解压包含 Fody.Costura 的程序集。该程序集具有作为资源嵌入的 dll 依赖项。我尝试使用 dotPeek 提取此 .zip 资源,并使用此
我在 WPF (PropertyChanged) 中有一个非常简单的项目 - 一个 View 、一个 View 模型和一个模型。在这个项目中,我使用包 PropertyChanged.Fody。当我想
我的一位 friend 向我提出了一项挑战,要求我解压包含 Fody.Costura 的程序集。该程序集具有作为资源嵌入的 dll 依赖项。我尝试使用 dotPeek 提取此 .zip 资源,并使用此
我想通过 Fody/MethodTimer 记录我的方法的执行时间。 我不能只传递我的方法参数的某些属性(它们是类类型)。 我的方法: [Time("'{obj.EventId}'")] privat
我是一名优秀的程序员,十分优秀!