Could not load file or assembly 'System.Memory, Version=4.0.1.' in Visual Studio 2015

Prometheus picture Prometheus · Apr 4, 2019 · Viewed 16.7k times · Source

For a couple of months i had no issue about generating the model from DB by deleting it and recreating it . After a pull from git, an issue has been occurred while trying to make the same process . After the second step (connection string creation with DB) there is no further proceed at the 3rd step and no connection string with the data base is being created at the app.config file.I have tried to test the connection with the database credentials and i am getting the following .

connection test failed

When i try to update specific tables from the model diagram as an alternative i get also the below :

System.Data.Entity.Core.EntityException: An error occurred while closing the provider connection. See the inner exception for details. ---> System.IO.FileNotFoundException: Could not load file or assembly 'System.Memory, Version=4.0.1.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' or one of its dependencies.

I have reinstalled Entity Framework and npgsql packages and tried to add all (the same) assemblies but with no success . Similar answers at Stack did not solve my issue . (I am allowed to work with the current versions with no further updates at VS or any of its packages.)

!Notice : i get all the appropriate data from my services when i use the API calls with the current model (proper communication with DB), but i cannot generate a new model from DB .

Any solutions ?

I am using

  • Windows 10

  • VS 2015

  • EntityFrameWork 6.2.0

  • Npgsql 3.1.1

  • .Net v.4.6.2

  • Asp.net

    Thanks in advance !

Answer

AirLancer picture AirLancer · Apr 4, 2019

Use IL Disassembler (ildasm.exe) to check if the version in your output directory matches the one in the error message.
Our software often runs into these kind of problems because different nuget packages require different versions together with a nasty mix of libraries not in nuget.
The need for different versions of the same library is not considered by the build process.

If the version mismatch is really the cause of your problem, you may be looking for binding redirects in you app.config to forward all older versions of that library to the newest one.
Something like this will need to be added to the <dependentAssembly> node of the library in question:

<bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.2.0.0" />

ildasm can usually be found here (depending on your Visual Studio version)
C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools\ildasm.exe