【问题标题】:not able to run LibGit2Sharp on Mono on ubuntu无法在 ubuntu 上的 Mono 上运行 LibGit2Sharp
【发布时间】:2016-01-27 04:34:53
【问题描述】:
有一个非常简单的单行控制台应用程序(使用 monodevelop)
但低于错误。
System.TypeInitializationException: The type initializer for 'LibGit2Sharp.Core.NativeMethods' threw an exception. ---> System.DllNotFoundException: git2-e0902fb
我的应用引用了两个 nuget 包
- LibGit2Sharp 0.21.0.176
- LibGit2Sharp.NativeBinaries 1.0.119
LibGit2Sharp.Repository.Init("foler path");
【问题讨论】:
标签:
c#
mono
libgit2
libgit2sharp
【解决方案1】:
libGit2Sharp 0.21.0.176 nuget 确实依赖于特定的本机库,它需要 'version/sha' e0902fb 并且不包含在 1.0.119 或 1.0.106 本机 nuget 中。 (我总是从源代码构建这些包。)
LibGit2Sharp 0.22.0-pre20151023210959 的预发布 nuget 确实包含本机 nuget 依赖项,并提取 1.0.6 版本的 LibGit2Sharp.NativeBinaries 一起工作。
所以:
使用LibGit2Sharp 的预发布版本,它会引入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) 的发布版本,并通过基于 64 位 linux 的 libgit2-e0902fb.so 查找 Native Nuget 是否可用(?)。
或者:
使用 LibGit2Sharp (0.21.0.176) 的发布版本并从源代码构建本机库。
【解决方案2】:
一旦你匹配了本地二进制包然后在 osx/linux 上你可能会遇到错误
System.DllNotFoundException: NativeBinaries/osx/libgit2-821131f.dylib
在这种情况下,将 /bin 中的目标目录从 NativeBinaries 重命名为 libNativeBinaries。
有关此问题的详细讨论,请参阅libgit2sharp/issues/1170