21

I'm getting the following exception when trying to call GetDatabase method of the MongoClient class after adding a new configuration using VS config. manager:

Could not load file or assembly 'System.Buffers, Version=4.0.2.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)

I installed the latest System.Buffer nuget package v4.5.1, created dependentAssembly in my app.config and Reference in my .csproj file, but I still have the same issue. For some reason it tries to reference System.Buffer with v4.0.2. Has anyone had a similar error and how did you solve it?

Adam Jensen
  • 323
  • 1
  • 2
  • 9
  • Did you do a clean build? When Net is changed the dependency of the obj file are not using Net Version. So you have to do a clean build or delete the bin folder of project. Also check if the latest dlls in the bin folder are in correct folder (debug/release). – jdweng Jul 21 '20 at 16:47
  • Please try to enter the `System.Buffer nuget package v4.5.1` in CMD(`run as administrator`. `run cd xxxx(xxxx\packages\System.Buffers.4.5.0\lib\netstandard2.0)` and then type : `gacutil /i System.Buffers.dll`. You can refer to [this similar issue](https://stackoverflow.com/questions/62764744/could-not-load-file-or-assembly-system-runtime-compilerservices-unsafe/62770487#62770487). Then when you finish it, please run `update-package -reinstall` under package manager console to reinstall the package. Besides, you could try to change `Version=4.0.2.0` to `Version=4.0.3.0` in csproj file. – Mr Qian Jul 22 '20 at 03:13
  • Please let us know if it helps. – Mr Qian Jul 22 '20 at 03:13
  • jdweng: sure. Still see the same issue. – Adam Jensen Jul 22 '20 at 08:22
  • https://stackoverflow.com/users/12450747/perry-qian-msft thank you a lot! It works for me. – Adam Jensen Jul 22 '20 at 08:43
  • @AdamJensen Glad to know that my steps help you solve the issue. I have added an answer for you and you can [mark it](https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work). Anyway, have a nice day! – Mr Qian Jul 22 '20 at 09:40

7 Answers7

7

Could not load file or assembly 'System.Buffers, Version=4.0.2.0…'

Solution

1) use CMD(run as Administrator ) and type

 cd xxxx(xxxx\packages\System.Buffers.4.5.1\lib\netstandard2.0))

run

gacutil /i System.Buffers.dll

Then, when you finish it, please run update-package -reinstall under package manager console to reinstall the package.

2) you can try to change Version=4.0.2.0 to Version=4.0.3.0 in csproj file.

Besides, there is a similar issue you can refer to.

Mr Qian
  • 21,064
  • 1
  • 31
  • 41
6

In my case, I had to add the assembly reference in the web.config that was already published in the Azure App Service, inside the <configuration></configuration> tag:

<runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
      <assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
      <bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
    </dependentAssembly>
  </assemblyBinding>
</runtime>
Alexandre Lima
  • 113
  • 1
  • 4
3

The easiest way is to use Nuget package manager, downgrade system.buffers to any lower version, and then upgrade it to the latest again.

omarmallat
  • 694
  • 2
  • 9
  • 20
3

I ran into this issue when adding the Azure.Storage.Blobs package to a Class Library where I was attempting to create a blob uploader client. When I added the package, it created an app.config with the correct binding redirect:

      <dependentAssembly>
        <assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
      </dependentAssembly>
      <dependentAssembly>

The issue, however, is that this binding redirect needs to live in the app.config of the application, not the class library: Can a class library have an App.config file?

So, adding the binding redirect is the correct way to solve this issue. Just make sure the binding redirect is specified in the calling web/console/etc app.

1

In my case, the answer was that the dependencies were in a DLL, but the EXE referencing the DLL needed to also contain the assembly bindings in the runtime section of the app.config:

  <dependentAssembly>
    <assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
  </dependentAssembly>

Rebuilding the app then resolved the issue for me. VS2017 C# Winforms app .NET frameworks 4.6.1.

starball
  • 20,030
  • 7
  • 43
  • 238
0

Another solution: just remove references to the assembly in the Web.config files of the projects generating the exception.

The references can look like:

<dependentAssembly>
  <assemblyIdentity name="System.Text.Encodings.Web" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
  <bindingRedirect oldVersion="0.0.0.0-4.0.4.0" newVersion="4.0.4.0" />
</dependentAssembly>
Tonatio
  • 4,026
  • 35
  • 24
0

I ran into a similar issue, tried all the steps above. In the end, another project had an older version of the same library. Too many projects in the solution, the other reference was scrolled out of view.

Taylor
  • 1
  • As it’s currently written, your answer is unclear. Please [edit] to add additional details that will help others understand how this addresses the question asked. You can find more information on how to write good answers [in the help center](/help/how-to-answer). – Community Apr 21 '22 at 06:24
  • This does not really answer the question. If you have a different question, you can ask it by clicking [Ask Question](https://stackoverflow.com/questions/ask). To get notified when this question gets new answers, you can [follow this question](https://meta.stackexchange.com/q/345661). Once you have enough [reputation](https://stackoverflow.com/help/whats-reputation), you can also [add a bounty](https://stackoverflow.com/help/privileges/set-bounties) to draw more attention to this question. - [From Review](/review/late-answers/31584795) – user107511 Apr 25 '22 at 14:57