无法在ubuntu上运行Mono上的LibGit2Sharp

时间:2016-01-27 04:34:54

标签: c# mono libgit2 libgit2sharp

有一个非常简单的单行控制台应用程序(使用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");

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:0)

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

LibGit2Sharp 0.22.0-pre20151023210959的预发布nuget确实包含本机nuget依赖项,并提取了LibGit2Sharp.NativeBinaries的1.0.6版本,它们协同工作。

所以:

使用预发布版本的LibGit2Sharp,它将引入1.0.6版本的LibGit2Sharp.NativeBinaries,它提供了正常的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是否可用(?)以及基于16位Linux的libgit2-e0902fb.so

或者:

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

答案 1 :(得分:0)

一旦你匹配原生二进制包然后在osx / linux上你可能会遇到错误

  

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

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

有关此问题的详细讨论,请参阅libgit2sharp/issues/1170