使用SqlClient的System.IO.FileNotFoundException

时间:2017-04-20 14:06:24

标签: c# .net sqlclient

在解决我提到的here问题之后,我得到了以下异常

  

System.IO.FileNotFoundException:'无法加载文件或程序集'System.Data.SqlClient,Version = 4.1.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'或其依赖项之一。系统找不到指定的文件。'

我的库是.NET Standard 1.4,WebApp是.NET Framework 4.6.1

System.Data.SqlClient是版本 - 4.3.0 NuGet包。 所以我尝试了以下但是徒劳无功:

SELECT chat_id FROM chat_participants WHERE participant IN(5,7,9) GROUP BY chat_id

4 个答案:

答案 0 :(得分:12)

我想你可能已经想出来但希望能节省宝贵的时间

为了使一切正常,您需要在引用.NET标准库的WebApp .NET Framework 4.6.1项目中引用 System.Data.SqlClient 。之后一切都应该正常。

听起来像.NET标准库没有抓住自己依赖的库二进制文件。 .NET Standard引用中没有“复制本地”选项,所以我也没有看到任何方法来检查或设置此行为

答案 1 :(得分:2)

我们使用nuget软件包管理器添加了System.Data.SqlClient作为对netstandard软件包的引用,从而解决了这一问题。完成后,Visual Studio将在Web解决方案中完成其余的工作。

当添加像Dapper这样的包时,似乎依赖项并没有全部添加到netstandard库中。

答案 2 :(得分:1)

这使我倍感欣慰,直到我将不起作用的项目与不起作用的项目进行了比较。

为System.Data.SQLClient安装NUGET不一定安装该名称的文件(.dll和.xml)-至少,它对我而言不是。

我从较旧的项目中取出了这两个文件,将它们放在较新的项目中,这解决了问题。

答案 3 :(得分:0)

我尝试过的事情:

我也有同样的错误。我创建了一个使用.net标准2.0类库的示例Web api(2.0)。在这个库中,我使用Dapper和Dapper.Contrib并使用它们的扩展方法尝试查询db。但是有同样的错误。我尝试在类库中添加System.Data.SqlClient nuget包,但是它不起作用。我正在使用VS2019 Community Edition。这发生在我身上两次。因此,写出对我有用的确切方案和解决方案。

有效方法:

最终通过从类库中删除System.Data.SqlClient nuget程序包并将其重新添加到WebApi中来解决。

这很奇怪,因为类库能够从自身内部解析dapper nuget包,但不能解析System.Data.SqlClient。