无法 运行 在 ubuntu 上的 Mono 上使用 LibGit2Sharp

not able to run LibGit2Sharp on Mono on ubuntu

有一个非常简单的一行控制台应用程序(使用 monodevelop)

但低于错误。

System.TypeInitializationException: The type initializer for 'LibGit2Sharp.Core.NativeMethods' threw an exception. ---> System.DllNotFoundException: git2-e0902fb

我的应用引用了两个 nuget 包

LibGit2Sharp.Repository.Init("foler path");

libGit2Sharp 0.21.0.176 nuget 确实依赖于特定的本机库,它需要 'version/sha' e0902fb 并且不包含在 1.0.1191.0.106 本机中小块。 (我总是从源代码构建这些包。)

LibGit2Sharp 0.22.0-pre20151023210959 的 pre-release nuget 确实包含原生 nuget 依赖项并拉取 LibGit2Sharp.NativeBinaries 的 1.0.6 版本,它们一起工作。

所以:

要么使用 LibGit2Sharp 的 pre-release 版本,它将引入 LibGit2Sharp.NativeBinaries 的 1.0.6 版本,它提供了正确的 64 位共享库(libgit2-6aa06b6.so) 协同工作:

<?xml version="1.0" encoding="utf-8"?>
<packages>## Heading ##
  <package id="LibGit2Sharp" version="0.22.0-pre20151023210959" targetFramework="net45" />
  <package id="LibGit2Sharp.NativeBinaries" version="1.0.106" targetFramework="net45" />
</packages>

或者:

使用 LibGit2Sharp 的发布版本 (0.21.0.176) 并查看是否有 Native Nuget 可用(?)64 位 linux-based libgit2-e0902fb.so.

或者:

使用 LibGit2Sharp 的发布版本 (0.21.0.176) 并从源代码构建本机库。

一旦你匹配了本地二进制文件包然后在 osx/linux 你可能 运行 出错

System.DllNotFoundException: NativeBinaries/osx/libgit2-821131f.dylib

在这种情况下,将 /bin 中的目标目录从 NativeBinaries 重命名为 libNativeBinaries。

有关这方面的详细讨论,请参阅 libgit2sharp/issues/1170