Web项目中的LibGit2Sharp TypeInitializationException

时间:2015-02-26 10:11:07

标签: asp.net exception visual-studio-2012 libgit2sharp

我使用VS 2012.我的解决方案包含一个网站项目和一个项目库。

我只在我的项目库中安装了nuget包。

在我的库中,我创建了一个简单的类“GitRepo”来测试git访问。在构造函数中,我想访问存储库:

public GitRepo(string repoPathName)
{
    m_Repo = new Repository(repoPathName);
}

在我的网页背后的代码中,我尝试实例化一个GitRepo对象:

GitRepo repo = new GitRepo(repoPathName);

我得到的TypeInitializationException没有更多细节。是的,dll和本机库结构在文件树中似乎是正确的(由nuget包安装)。

我有一个简单的控制台程序的解决方案,我添加了我以前的库(添加现有对象)。在“main”函数中,我实例化一个“GitRepo”对象......它工作正常。

非常感谢一些帮助。

这里有完整的例外:

System.TypeInitializationException was unhandled by user code
  HResult=-2146233036
  Message=Une exception a été levée par l'initialiseur de type pour 'LibGit2Sharp.Core.NativeMethods'.
  Source=LibGit2Sharp
  TypeName=LibGit2Sharp.Core.NativeMethods
  StackTrace:
       à LibGit2Sharp.Core.NativeMethods.git_repository_open(RepositorySafeHandle& repository, FilePath path)
       à LibGit2Sharp.Core.Proxy.git_repository_open(String path)
       à LibGit2Sharp.Repository..ctor(String path, RepositoryOptions options)
       à CDM.ESD1_WSGINSTALL.Business.GitRepo..ctor(String repoPathName) dans c:\PRIV\Projects\ESD1\ESD1_WSGINSTALL\ESD1_WSGINSTALL.Business\GitRepo.cs:ligne 39
       à CDM.ESD1WSGINSTALL.Commands.CharteView.DoBuildRPM(String id) dans c:\PRIV\Projects\ESD1\ESD1_WSGINSTALL\ESD1_WSGINSTALL\App_Code\Commands\CharteViewActivity\CharteView.cs:ligne 262
  InnerException: System.DllNotFoundException
       HResult=-2146233052
       Message=Impossible de charger la DLL 'git2-e0902fb': Le module spécifié est introuvable. (Exception de HRESULT : 0x8007007E)
       Source=LibGit2Sharp
       TypeName=""
       StackTrace:
            à LibGit2Sharp.Core.NativeMethods.git_libgit2_init()
            à LibGit2Sharp.Core.NativeMethods.LibraryLifetimeObject..ctor()
            à LibGit2Sharp.Core.NativeMethods..cctor()
       InnerException: 

1 个答案:

答案 0 :(得分:1)

nulltoken,谢谢你的帮助。我已经开始了一个新的控制台项目,并将我的库添加到另一个文件夹中。当我实现我的“GitRepo”对象(来自我的库)时,没有例外。所以我检查了解决方案的目录树,我看到LibGit2Sharp.dll和NativeBinaries文件夹是在程序文件夹的bin / debug下自动添加的。

因此我检查了我的web项目的bin文件夹,我看到没有“NativeBinaries”文件夹。我手动添加它,现在没有更多例外。