我有一些.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的依赖管理有效,而另一些则无效?
我迄今为止尝试过的方法:
该解决方案包含作为另一个专有应用程序的扩展的库。可以将其视为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。