NuGet包管理问题 - 找到的程序集清单定义与程序集引用不匹配

3
我有一些.NET Framework 4.8项目在Visual Studio解决方案中。我在解决方案级别上管理NuGet,以确保所有项目使用相同版本的NuGet。我已经确保没有安装任何一个NuGet的多个版本。
该解决方案包含作为另一个专有应用程序的扩展的库。可以将其视为Internet浏览器扩展。该解决方案包括一个虚拟控制台应用程序,该应用程序引用这些库,以确保正确处理依赖关系。
我有几个项目依赖于CsvHelper。CsvHelper又依赖于Microsoft.Bcl.AsynInterfaces >= 1.0.0。这些项目都使用Microsoft.Bcl.AsynInterfaces 6.0.0。
Microsoft.Bcl.AsyncInterfaces的绑定重定向已经就位。 在生成日志中可以找到以下条目。
Unified primary reference "Microsoft.Bcl.AsyncInterfaces, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51". (TaskId:20) Using this version instead of original version "1.0.0.0" in "E:\Visual Studio...\packages\CsvHelper.27.2.1\lib\net47\CsvHelper.dll" because AutoUnify is 'true'. (TaskId:20)
每当项目在运行时尝试使用CsvHelper时,我会收到以下错误。
Could not load file or assembly 'Microsoft.Bcl.AsyncInterfaces, Version=1.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) at 这个完全相同的问题也会出现在另外两个NuGet上。
第二个是ExcelMapper,它依赖于System.Text.Json >= 6.0.0。如果我从6.0.0升级到6.0.1,我会得到与CsvHelper和Microsoft.Bcl.AsyncInterfaces相同的错误。
第三个是NPOI,它依赖于SharpZipLib >= 1.3.2。如果我从1.3.2升级到1.3.3,则会发生相同的问题。
在这两种情况下,正确的绑定重定向会自动设置。
我有其他的NuGet,例如MySql.Data,它依赖于BouncyCastle >= 1.8.3.1,并且我正在使用1.8.9。MySql.Data还依赖于Google.Protobuf >= 3.6.1,我正在使用3.19.3。
为什么某些NuGet的依赖管理有效,而另一些则无效?
我迄今为止尝试过的方法:
  • 在Visual Studio中进行清洁解决方案操作。
  • 清空bin和obj文件夹下的Release和Debug文件夹。
  • 使用dotnet nuget locals all --clear和mage.exe -cc清除所有缓存。
  • 使用update-package -reinstall重新安装所有nuget包。
  • FusionLog只告诉我一个文件丢失,没有进一步的说明。
  • 删除所有绑定重定向并禁用自动生成绑定重定向。(稍后恢复它们)
  • 尝试使用Visual Studio 2019和2022。

你能分享一个最小化,可重现的例子吗?这样我们就可以复制粘贴进行调试,找到准确问题所在。 - zivkan
1
@zivkan 如果我创建一个只包含一个使用CsvHelper的控制台应用程序项目的新解决方案,我就无法重现这个问题。因此,我不知道是什么触发了这个问题,也无法制作一个最小可重现的示例。 - KeeperB5
1个回答

1

在其他地方建议我将bindingRedirects添加到主机应用程序的app.config文件中。 这解决了我遇到的这些问题。

新问题是我不知道如何在构建过程中更新主机应用程序的app.config,因为主机应用程序不是解决方案的一部分,因为它是专有的。 如果我自己找不到解决方法,也许我会发新问题来询问此事。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接