我有一个非常简单的.NET Framework 4.7.2应用程序,其中包含以下nuget包:
<packages>
<package id="Autofac" version="5.1.2" targetFramework="net472" />
<package id="DynamicData" version="6.14.8" targetFramework="net472" />
<package id="Microsoft.Bcl.AsyncInterfaces" version="1.1.0" targetFramework="net472" />
<package id="MSBuildTasks" version="1.5.0.235" targetFramework="net472" developmentDependency="true" />
<package id="ReactiveUI" version="11.2.3" targetFramework="net472" />
<package id="Serilog" version="2.9.0" targetFramework="net472" />
<package id="Serilog.Enrichers.Process" version="2.0.1" targetFramework="net472" />
<package id="Serilog.Enrichers.Thread" version="3.1.0" targetFramework="net472" />
<package id="Serilog.Sinks.File" version="4.1.0" targetFramework="net472" />
<package id="Splat" version="9.3.11" targetFramework="net472" />
<package id="System.Reactive" version="4.3.2" targetFramework="net472" />
<package id="System.Runtime.CompilerServices.Unsafe" version="4.7.0" targetFramework="net472" />
<package id="System.Threading.Tasks.Extensions" version="4.5.3" targetFramework="net472" />
<package id="System.ValueTuple" version="4.5.0" targetFramework="net472" />
</packages>
正如您所看到的,这里引用了版本为4.5.3
的System.Threading.Tasks.Extensions
(我无法更改此版本,因为其他软件包依赖于它)。
当我在Visual Studio解决方案资源管理器的DLL引用属性中查看时,它显示引用了版本号为4.2.0.1
的DLL,该DLL位于.....\packages\System.Threading.Tasks.Extensions.4.5.3\lib\netstandard2.0\System.Threading.Tasks.Extensions.dll
。
在app.config
文件中,有一个自动生成的绑定重定向:
<dependentAssembly>
<assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.2.0.1" newVersion="4.2.0.1" />
</dependentAssembly>
当我运行应用程序时,出现异常: 我已经尝试更改绑定重定向为类似以下内容的东西:
<bindingRedirect oldVersion="0.0.0.0-99.99.99.99" newVersion="4.5.3" />
但问题仍然存在。我不知道如何解决这个dll-hell问题。非常感谢任何帮助。
System.Runtime.CompilerServices.Unsafe
的默认版本是4.5.2
而不是4.7.0
!! - Mohammed Sajid.assembly extern System.Runtime.CompilerServices.Unsafe
。 - Oguz Ozgulpackages.config
中的版本号是NuGet包版本,与DLL内部的程序集版本不一定相对应。您尝试过完全删除<dependentAssembly>
节点吗? - Victor Wilson