Could not load file or assembly 'System.Threading.Tasks.Extensions, Version=4.2.0.0

4

I recently installed CsvHelper (https://joshclose.github.io/CsvHelper/) when i try to use the library I get the following error:

Could not load file or assembly 'System.Threading.Tasks.Extensions, Version=4.2.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

In my app.config I have binding redirect:

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

Also in my project I have reference to

\packages\System.Threading.Tasks.Extensions.4.5.3\lib\netstandard2.0\System.Threading.Tasks.Extensions.dll

Its version is 4.2.0.1 I am not sure why its still trying to load 4.2.0.0 of the library.

my project is running .net 4.7.2

c#
csvhelper
assembly-binding-redirect
assemblybinding
asked on Stack Overflow Feb 12, 2020 by Ismail

4 Answers

2

I had the same problem today in a multi project solution, System.Threading.Tasks.Extensions got installed by embedding the Autofac package. After removing and reinstalling Autofac (via nuget) in both projects, the two packages.config contained the same entry

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

but while one project referenced the correct dll in

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

the other one referenced the older version in

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

After manually removing the older dll from the references (not via nuget) and embedding the correct one, everything worked again. I don't see why the correct packages.config entry did not enforce the correct reference.

EDIT:

If it works on your dev machine but not on the machine you deployed to, don't forget to deploy the binding redirects in web.config / app.config. In my case they look like so:

<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>
answered on Stack Overflow May 8, 2020 by IngoB • edited May 14, 2020 by IngoB
1

So i created a new .NET 472 project then added all the libs etc and code and now it works.

I suspect it originally broke because I had installed a really old version of csvhelper lib with excel plugin. Even though i removed it and removed all references it was still picking it up from somewhere.

answered on Stack Overflow Feb 13, 2020 by Ismail • edited May 13, 2020 by UuDdLrLrSs
1

I had this problem today in a multi-project solution. Fixed it by updating other NuGet packages in the offending project. Unfortunately, not sure which one fixed the problem.

Current version of CsvHelper: 15.0.5.

answered on Stack Overflow May 13, 2020 by adamj537
0

According to https://github.com/JoshClose/CsvHelper/issues/1462 this seems to be a bug in one of the CSVHelper 15.0.0 dependencies. The 15.0.0 version (not sure about earlier ones) brings in some other assembly which causes the problem.

Personally I worked around this by downgrading to 13.0, but that bug report now states that they have released 15.0.1 specifically to fix this. I've yet to confirm that myself.

answered on Stack Overflow Mar 6, 2020 by UuDdLrLrSs • edited Mar 7, 2020 by UuDdLrLrSs

User contributions licensed under CC BY-SA 3.0