在解决我提到的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
答案 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。