[英]System.IO.FileNotFoundException with SqlClient
在这里提到的解决我的问题后,我收到以下异常
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 包。 所以我尝试做以下但徒劳无功:
<dependentAssembly>
<assemblyIdentity name="System.Data.SqlClient" culture="neutral" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="4.1.0.0" newVersion="4.3.0.0"/>
</dependentAssembly>
我想你可能已经想通了,但希望它能节省一些宝贵的时间
为了使一切正常,您需要在引用您的 .NET 标准库的 WebApp .NET Framework 4.6.1 项目中引用System.Data.SqlClient 。 之后一切都应该正常工作。
听起来像 .NET 标准库还没有抓住它自己的依赖库二进制文件。 .NET Standard 引用中没有类似于“复制本地”选项的内容,因此我也看不到任何方法来检查或设置此行为
我们通过添加System.Data.SqlClient
作为对我们的 netstandard 包的引用来解决这个问题,只需使用 nuget 包管理器。 完成后,Visual Studio 会在 Web 解决方案中完成其余的工作。
添加像 Dapper 这样的包时,似乎依赖项并未全部添加到 netstandard 库中。
这让我开始了一场愉快的追逐,直到我真正将我的项目与无效的项目进行了比较。
System.Data.SQLClient 的 NUGET 安装不一定安装该名称的文件(.dll 和 .xml) - 至少,它不适合我。
我从旧项目中取出这两个文件,将它们放入新项目的 bin 中,这解决了问题。
我试过的:
我也有同样的错误。 我创建了一个使用 .net 标准 2.0 类库的示例 web api(2.0)。 在这个库中,我使用 Dapper 和 Dapper.Contrib 并使用它们的扩展方法尝试查询数据库。 但是有同样的错误。 我尝试在类库中添加 System.Data.SqlClient nuget 包,但没有奏效。 我正在使用 VS2019 社区版。 这在我身上发生过两次。 所以写出对我有用的确切场景和解决方案。
什么工作:
最终通过从类库中删除 System.Data.SqlClient nuget 包并将其重新添加到 WebApi 中解决了这个问题。
这很奇怪,因为类库能够从自身内部解析 dapper nuget 包而不是 System.Data.SqlClient。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.