繁体   English   中英

System.IO.FileNotFoundException 与 SqlClient

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM