Kei*_*ith 6 .net c# dll libgit2sharp fody-costura
我已经编写了一个小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>
Run Code Online (Sandbox Code Playgroud)
更复杂的是:
<?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>
Run Code Online (Sandbox Code Playgroud)
但是,我总是得到一个错误,不是在打开exe时,而是在我单击首先使用git库的按钮时:
...'LibGit2Sharp.Core.NativeMethods'引发了异常。---> System.DllNotFoundException:无法加载DLL'git2-1196807':找不到指定的模块。(来自HRESULT的异常:0x8007007E)...
我所做的一些事情使我看到LibGet2Sharpdll无法访问的错误(不是有关的错误git2-1196807),但是我认为这只是在削弱Fody的时候。
您可以提供任何建议,我将不胜感激。这让我感到困惑。如果将git2-1196807.dll文件放在部署的位置“。\ lib \ win32 \ x86”和等效的64位文件中,则该文件可以正常运行,但是无法使用costura.fody。
有什么想法吗?
在此问题的帮助下找到了答案,不得不添加一些我自己的工作。
本质上,您需要在项目中创建一对名为Costura32和Costura64的文件夹,并在其中放置适当版本的dll,并将它们设置为“嵌入式资源”。然后,在构建解决方案时,编织者可以将它们包括在exe中。
就我而言,我使用的是LibGit2Sharp dll,它依赖于git2-15e1193.dll,因此我将其作为解决方案的一部分:
对于每个dll,我将Build Action设置为Embedded Resource:
最后,FodyWeavers.xml是:
<?xml version="1.0" encoding="utf-8" ?>
<Weavers>
<costura IncludeDebugSymbls='false'>
<Unmanaged32Assemblies>
git2-15e1193
</Unmanaged32Assemblies>
<Unmanaged64Assemblies>
git2-15e1193
</Unmanaged64Assemblies>
</costura>
</Weavers>
Run Code Online (Sandbox Code Playgroud)
确保在FodyWeavers.xml文件中的dll名称后保留.dll。
| 归档时间: |
|
| 查看次数: |
1666 次 |
| 最近记录: |