首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >DLL地狱-无法加载文件或程序集System.Threading.Tasks.Extensions

DLL地狱-无法加载文件或程序集System.Threading.Tasks.Extensions
EN

Stack Overflow用户
提问于 2020-03-12 14:38:18
回答 1查看 8.6K关注 0票数 6

我有一个非常简单的.NET Framework4.7.2应用程序,其中有以下nugets:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<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解决方案资源管理器中这个DLL引用的属性时,它将显示从.....\packages\System.Threading.Tasks.Extensions.4.5.3\lib\netstandard2.0\System.Threading.Tasks.Extensions.dll引用的版本.....\packages\System.Threading.Tasks.Extensions.4.5.3\lib\netstandard2.0\System.Threading.Tasks.Extensions.dll

app.config中,自动生成绑定重定向:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   <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>

当我运行这个应用程序时,我得到了异常:

我已经尝试将绑定重定向到以下内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   <bindingRedirect oldVersion="0.0.0.0-99.99.99.99" newVersion="4.5.3" />

但问题依然存在。我不知道怎么解决这个dll-地狱。任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-12 19:13:19

当我转到Visual解决方案资源管理器中这个DLL引用的属性时,它显示了从xxxxxx引用的4.2.0.1版本

首先,我认为您对DLL versionthe 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。

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

DLL地狱-无法加载文件或程序集System.Threading.Tasks.Extensions

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

从错误日志中可以看出,项目引用的是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版本是packages.config文件中的4.5.3

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

3)在重新安装这些包之前,请先安装Tools-->Nuget Package Manager->Package Manager Console,然后在下运行update-Package -reinstall重新安装软件包

4)创建一个新的框架4.7.2项目,然后引用这些nuget包来测试它是否是由您的项目引起的。

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60662705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文