“LibGit2Sharp.Core.NativeMethods”的类型初始值设定项抛出异常

The type initializer for ‘LibGit2Sharp.Core.NativeMethods’ threw an exception

收到特定异常:“无法加载文件或程序集‘System.Runtime.InteropServices.RuntimeInformation,版本=0.0.0.0,文化=中性”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。”

我有两个项目,一个是一种“概念验证”,完全相同的代码在那里工作得很好,而另一个是一个大型解决方案,我在其中向现有项目之一添加代码。

当 运行 以下代码行时,我在第二个(失败的)项目中遇到异常:

LibGit2Sharp.Repository.Clone(baseGitHubURL + ourOrg + “/” + ourRepo.Name, ourRepoPath + @“\” + ourRepo.Name, co) ;

在这段代码之前,我已经打印了传递的参数,它们在两个项目的输出中如下所示(再次 - 每个项目中的代码相同):

GitHub路径:https://github.company.com/TESTING/CA4F

文件系统路径:C:\Users\User\CA4F

CloneOptions 的创建在两个使用静态值的项目中是相同的(它使用个人访问令牌作为用户名)。

我怀疑 LibGit2Sharp 添加到失败项目的方式有问题。请注意,两者的过程相同:

来自 NuGet 控制台:“Install-Package LibGit2Sharp”

两者版本相同(最新,版本0.25.0)。

尽管如此,工作项目在列出 LibGit2Sharp 的项目下有一个“依赖项”部分,而非功能项目没有此部分。当我转到 Nuget 包管理器并告诉它安装到解决方案中的所有项目时,LibGit2Sharp 被添加为对我的实际项目的引用。

另一条信息 - 工作项目没有“LibGit2Sharp.NativeBinaries”的 NuGet 包,而失败的项目有。一时兴起,我尝试从失败的项目中删除它,但 Nuget 说“无法卸载‘LibGit2Sharp.NativeBinaries.1.0.210’,因为‘LibGit2Sharp.0.25.0’依赖于它。”

只是为了解决这个问题 - 我能够通过将以下内容添加到解决方案中每个项目的 csproj 中 PropertyGroup 标签下的第一个配置 属性 组来解决这个问题:

<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>

之后,重新编译和 运行 让我成功调用了 LibGit2Sharp! :)

请注意,这是 LibGit2Sharp git 问题“论坛”上“bording”提供的解决方案。