Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Could not load file or assembly error in .Net Standard 2.0 class library

I have a .NET Standard 2.0 class library project with installed Nuget package System.Data.SqlClient version 4.4.0 and a Windows Form .NET Framework 4.7 project that has a reference to that class library.

Installing the Nuget Package and building the solution is successful. but in runtime every time that the code reaches a method that has any thing from SqlClient assembly inside it (for example an instance from SqlConnection) it gets this error:

Could not load file or assembly 'System.Data.SqlClient, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.

Considering this question, I assume the problem was also there in the last major version of the Nuget package.

Edit

I downloaded the Nuget package and unzipped it and from \ref\netstandard2.0 folder copied the System.DataSqlClient.dll manually in \bin\Debug folder of my Windows Form Project and now it works. The exact situation also happened with Microsoft.Win32.Registry package. So I was almost convinced that it's my fault and I'm doing something the wrong way, but when I tested it with System.Drawing.Primitive Package it worked perfectly without any need to copy a dll. Now I'm really confused.

like image 658
sahar Avatar asked Aug 17 '17 15:08

sahar


2 Answers

I guess you may have figured it out already but hope it would help someone - wasted some time too on this.

So, in order to make everything work you would need to reference System.Data.SqlClient in Windows Form project that is referencing your .NET Standard Library From that point everything should be working like a charm

As you already mentioned System.Data.SqlClient.dll was not in output directory. Sounds like .NET Standard Library haven't grabbed with itself dependent library binary. There is nothing like "Copy Local" option in .NET Standard references so I don't see any way to check or set this behavior too

like image 119
Bogdan K Avatar answered Oct 15 '22 22:10

Bogdan K


I had same problem.

Solution for me was adding dependecy from nuget for latest System.Data.SqlClient at my .NET Standard Library project.

like image 4
Karol Jackiewicz Avatar answered Oct 15 '22 22:10

Karol Jackiewicz