我有一个我写过的小 exe,它使用LibGit2Sharp
并试图用来Costura.Fody
嵌入所有内容,所以我只有一个 exe 可以分发(实际上,也有两个配置文件,但没关系)。
问题似乎是对LibGet2Sharp.dll
有相当坚定的参考git2-1196807.dll
,我似乎无法弄清楚如何以前者可以使用的方式嵌入后者。我已经尝试了几件事,但我认为我最好的尝试是:
所有这些 .dll 都从解决方案的packages
文件夹中复制并设置为Build Action = Embedded Resource
and 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' 抛出异常。---> System.DllNotFoundException:无法加载 DLL 'git2-1196807':找不到指定的模块。(来自 HRESULT 的异常:0x8007007E)...
我所做的一些事情给了我一个错误,即LibGet2Sharp
dll 无法访问(而不是关于 的错误git2-1196807
),但我认为那只是我削弱 Fody 的时候。
我将不胜感激您能提供的任何建议;这让我很困惑。如果我将git2-1196807.dll
文件放在部署位置“.\lib\win32\x86”和 64 位等效文件中,那么它运行良好,但这违背了使用 costura.fody 的意义。
想法?