17

我最近安装了 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

4

6 回答 6

11

我今天在多项目解决方案中遇到了同样的问题,System.Threading.Tasks.Extensions 是通过嵌入 Autofac 包安装的。在两个项目中删除并重新安装 Autofac(通过 nuget)后,两个 packages.config 包含相同的条目

<package id="System.Threading.Tasks.Extensions" version="4.5.4" targetFramework="net472" />

但是虽然一个项目引用了正确的 dll

包\System.Threading.Tasks.Extensions.4.5.4\lib

另一个引用了旧版本

包\System.Threading.Tasks.Extensions.4.5.2\lib

从引用中手动删除旧的 dll(不是通过 nuget)并嵌入正确的 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>
于 2020-05-08T22:19:23.580 回答
4

升级 .net 版本时,我在多项目解决方案中遇到了这个问题。在我的情况下Update-Package -reinstall,在包管理器控制台中运行命令解决了这个问题。

于 2021-10-08T11:38:59.583 回答
2

根据https://github.com/JoshClose/CsvHelper/issues/1462这似乎是 CSVHelper 15.0.0依赖项之一中的错误。15.0.0 版本(不确定早期版本)引入了一些导致问题的其他程序集。

就我个人而言,我通过降级到 13.0 来解决这个问题(评论还指出 12.3.2 有效),但该错误报告现在指出他们已经专门发布了 15.0.1 来解决这个问题。我自己还没有确认。

于 2020-03-06T22:23:03.873 回答
1

所以我创建了一个新的 .NET 472 项目,然后添加了所有的库等和代码,现在它可以工作了。

我怀疑它最初坏了,因为我安装了一个带有 excel 插件的非常旧版本的 csvhelper lib。即使我删除了它并删除了所有引用它仍然从某个地方捡起它。

于 2020-02-13T07:46:47.947 回答
0

我今天在多项目解决方案中遇到了这个问题。通过更新有问题的项目中的其他 NuGet 包来修复它。不幸的是,不确定哪一个解决了这个问题。

当前版本的 CsvHelper:15.0.5。

于 2020-05-13T20:00:54.433 回答
0
<assemblyBinding>
  <probing privatePath="System.Threading.Tasks.Extensions.dll"/>
</assemblyBinding>
            <assemblyBinding>
  <probing privatePath="System.Runtime.CompilerServices.Unsafe.dll"/>
</assemblyBinding>
    <assemblyBinding>
  <probing privatePath="Microsoft.Bcl.AsyncInterfaces.dll"/>
</assemblyBinding>
于 2020-09-14T20:24:45.017 回答