我最近安装了CsvHelper (https://joshclose.github.io/CsvHelper/),当我尝试使用这个库时,我得到了以下错误:
无法加载文件或程序集“System.Threading.Tasks.Extensions、Version=4.2.0.0、Culture=neutral、PublicKeyToken=cc7b13ffcd2ddd51”或其依赖项之一。所定位的程序集的清单定义与程序集引用不匹配。(HRESULT例外: 0x80131040)
在我的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>
在我的项目中,我也参考了
\packages\System.Threading.Tasks.Extensions.4.5.3\lib\netstandard2.0\System.Threading.Tasks.Extensions.dll
它的版本是4.2.0.1,我不知道为什么它仍然试图加载4.2.0.0的库。
我的项目正在运行.net 4.7.2
发布于 2020-05-08 22:19:23
我今天在一个多项目解决方案中遇到了同样的问题,System.Threading.Tasks.Extensions是通过嵌入Autofac包来安装的。在两个项目中删除并重新安装Autofac (通过nuget)之后,两个packages.config包含相同的条目
<package id="System.Threading.Tasks.Extensions" version="4.5.4" targetFramework="net472" />
但是,当一个项目引用正确的dll时,
packages\System.Threading.Tasks.Extensions.4.5.4\lib
另一个引用了
packages\System.Threading.Tasks.Extensions.4.5.2\lib
在手动从引用(不是通过nuget)删除旧的dll并嵌入正确的dll之后,一切都再次正常工作。我不明白为什么正确的packages.config
条目没有强制执行正确的引用。
编辑:
如果它在开发机器上工作,但在部署到的机器上不起作用,那么不要忘记在web.config
/ 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>
发布于 2021-10-08 11:38:59
在升级.net版本时,我在一个多项目解决方案中遇到了这个问题。在我的例子中,在Package控制台中运行Update-Package -reinstall
命令解决了这个问题。
发布于 2020-03-06 22:23:03
根据https://github.com/JoshClose/CsvHelper/issues/1462的说法,这似乎是CSVHelper 15.0.0 依赖关系中的一个bug。15.0.0版本(不确定以前的版本)引入了其他程序集,从而导致了问题。
就我个人而言,我通过降级到13.0 (一条评论也指出12.3.2有效)来解决这个问题,但是这个bug报告现在说他们已经发布了15.0.1专门来解决这个问题。我自己还没确认。
https://stackoverflow.com/questions/60194368
复制相似问题