Visual Studio 的发布向导不包括 libgit2 的本机二进制文件

Publish Wizard with Visual Studio doesn't include native binaries of libgit2

我正在尝试使用 Visual Studio 中的发布工具发布我的应用程序。 当我构建应用程序时,x86 的 libgit2amd64NativeBinaries 目录被很好地复制到构建目录 bin/Release 中,因此应用程序 运行 完美地我的开发环境。

问题是,使用发布向导创建 ClickOnce 应用程序时,未集成本机二进制文件,因此我在另一台计算机上出现错误:

System.DllNotFoundException: Impossible de charger la DLL 'git2-e0902fb': Le   module spécifié est introuvable. (Exception de HRESULT : 0x8007007E)
   à LibGit2Sharp.Core.NativeMethods.git_libgit2_init()
   à LibGit2Sharp.Core.NativeMethods.LibraryLifetimeObject..ctor()
   à LibGit2Sharp.Core.NativeMethods..cctor()

LibGit2Sharp.dll.deploy 已在发布过程结束时正确复制到应用程序文件目录中。

我尝试了很多我发现的解决方案,例如使用 .dll 文件或使用 post 或预构建事件创建 link。

IDE : Visual Studio 2013 Express Windows 桌面版。

LibGit2Sharp.0.21.0.176NuGet 一起安装。

本机二进制文件未包含在 ClickOnce 清单中的原因是 LibGit2Sharp.NativeBinaries NuGet 程序包将其构建操作设置为 None。发布向导仅包括设置为内容的文件。

您可以 link 将 NuGet 包中的 NativeBinaries 文件夹放入您的项目并将构建操作设置为内容,但您需要在包更新时手动维护它。

另一种选择是使用 here.

中描述的过程手动将文件添加到 ClickOnce 清单

但是,最好的选择可能是首先避免使用 ClickOnce。我建议改为查看 Squirrel