gpt4 book ai didi

c# - DLL hell - 无法加载文件或程序集 System.Threading.Tasks.Extensions

转载 作者:行者123 更新时间:2023-12-03 15:42:58 29 4
gpt4 key购买 nike

我有非常简单的 .NET Framework 4.7.2 应用程序,其中包含以下 nugets:

<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>

如您所见,有 System.Threading.Tasks.Extensions在版本 4.5.3 中引用(我无法更改此版本,因为其他软件包依赖于它)。

当我在 Visual Studio 解决方案资源管理器中转到此 DLL 引用的属性时,它显示版本 4.2.0.1引用自 .....\packages\System.Threading.Tasks.Extensions.4.5.3\lib\netstandard2.0\System.Threading.Tasks.Extensions.dll .

app.config自动生成绑定(bind)重定向:
   <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>

当我运行应用程序时,出现异常:

Exception message

我已经尝试将绑定(bind)重定向更改为:
   <bindingRedirect oldVersion="0.0.0.0-99.99.99.99" newVersion="4.5.3" />

但问题仍然存在。我不知道如何解决这个 dll-hell。任何帮助都感激不尽。

最佳答案

When I go to properties of this DLL reference in Visual Studio Solution Explorer, it shows version 4.2.0.1 referenced from xxxxxx



首先,我认为你对 DLL version 有一点误解。和 the nuget version .
version 4.5.3只是 nuget 包 System.Threading.Tasks.Extensions的版本
编号而 version 4.2.0.1只是 System.Threading.Tasks.Extensions.dll (存在于nuget pacakge)编号。它们根本不是一个概念。您可以看到 xxx.csproj 中引用的此类 dll文件。

enter image description here

一个版本的nuget包包含多个针对不同项目框架的竞争DLLS,这些DLLS会根据nuget机制自动安装到对应的项目中。

DLL hell - Could not load file or assembly System.Threading.Tasks.Extensions



正如你所说 ,您有一个名为 System.Reactive version 4.3.2 的 nuget 包这取决于 System.Threading.Tasks.Extensions 4.5.3在你的项目中。你可以看到这个:

enter image description here

从您的错误日志中,似乎该项目引用了 System.Threading.Tasks.Extensions.dll 4.2.0.0它在 nuget 包中不存在 System.Threading.Tasks.Extensions 4.5.3它应该是 System.Threading.Tasks.Extensions.dll 4.2.0.1 .不确定您是否更改了版本号或项目的原因。

您可以检查以下步骤:

解决方案

1) 确保 System.Threading.Tasks.Extensions版本是 4.5.3packages.config文件。

2) 确保将 dll 版本更改为 4.2.0.1xxx.csproj文件

3) 在重新安装这些之前,请 clean the nuget cache首先,然后运行 ​​ update-Package -reinstallTools 下--> Nuget Package Manager -> Package Manager Console重新安装软件包

4) 新建一个framework 4.7.2项目,然后引用这些nuget包来测试是否是你的项目引起的。

关于c# - DLL hell - 无法加载文件或程序集 System.Threading.Tasks.Extensions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60662705/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com