我使用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:
答案 0 :(得分:1)
nulltoken,谢谢你的帮助。我已经开始了一个新的控制台项目,并将我的库添加到另一个文件夹中。当我实现我的“GitRepo”对象(来自我的库)时,没有例外。所以我检查了解决方案的目录树,我看到LibGit2Sharp.dll和NativeBinaries文件夹是在程序文件夹的bin / debug下自动添加的。
因此我检查了我的web项目的bin文件夹,我看到没有“NativeBinaries”文件夹。我手动添加它,现在没有更多例外。