我正在使用C#控制台应用程序(.NET 4.6.1)
,并且在运行其可执行文件时出现以下错误:
“ LibGit2Sharp.Core.NativeMethods”的类型初始值设定项引发了
例外。
错误说明:
在
LibGit2Sharp.Core.NativeMethods.git_repository_open(git_repository *&
资料库,FilePath路径)
在LibGit2Sharp.Core.Proxy.git_repository_open(字符串路径)
在LibGit2Sharp.Repository..ctor(字符串路径,RepositoryOptions选项,
RepositoryRequiredParameter requiredParameter)
在LibGit2Sharp.Repository..ctor(字符串路径)
在MyProj.MyClass.GetMaxBranchVersion(String
repoPath)
内部例外:
System.IO.FileNotFoundException:无法加载文件或程序集
'System.Runtime.InteropServices.RuntimeInformation,版本= 0.0.0.0,
文化=中性,PublicKeyToken = b03f5f7f11d50a3a'或其中之一
依赖性。该系统找不到指定的文件。文档名称:
'System.Runtime.InteropServices.RuntimeInformation,版本= 0.0.0.0,
文化=中性,PublicKeyToken = b03f5f7f11d50a3a'
LibGit2Sharp.Core.Platform.get_OperatingSystem()在
LibGit2Sharp.Core.NativeMethods..cctor()
现在,该项目的代码在调试时或仅在Visual Studio中运行时都可以正常工作-尝试将其作为可执行文件运行时出现错误。
GetMaxBranchVersion方法本身并不是真正的问题,因为我尝试一点都不调用它,这只会导致在运行下一个方法时出现错误。
我尝试按照this answer将以下配置项添加到.csproj文件,但不幸的是,它没有解决我的问题:
<PropertyGroup>
..
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
..
</PropertyGroup>
可能是什么原因?
我了解所提供的信息可能不多,但是如果需要,我可以提供其他详细信息。
最佳答案
我设法通过以下方法解决了我的问题:
将项目的Target Framework
更改为.NET 4.7
在试图从中运行可执行文件的文件夹中复制了System.Runtime.InteropServices.RuntimeInformation.dll
此时,我又遇到了一个错误:
System.DllNotFoundException:无法加载DLL'git2-6311e88':
找不到指定的模块。 (来自HRESULT的异常:
0x8007007E)在LibGit2Sharp.Core.NativeMethods.git_libgit2_init()
在LibGit2Sharp.Core.NativeMethods.LoadNativeLibrary()在
LibGit2Sharp.Core.NativeMethods..cctor()
多亏了this answer,我得以克服以下问题
也复制git2-6311e88.dll
(在我的情况下,需要x86版本,通常位于bin/debug
或bin/release
文件夹中,在lib/os-version
下,对于我来说,是lib/win32
)
和瞧!有用!祝所有遇到同样问题的人都好运。
关于c# - “LibGit2Sharp.Core.NativeMethods”的类型初始值设定项引发了异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50586936/