我有一个.NET Standard 2.0类库项目,安装了Nuget包System.Data.SqlClient版本4.4.0和一个Windows Form .NET Framework 4.7项目,该项目引用了该类库。
安装Nuget Package并构建解决方案是成功的。但是在运行时每次代码到达一个方法,里面有SqlClient程序集中的任何东西(例如来自SqlConnection的实例),它会收到这个错误:
无法加载文件或程序集'System.Data.SqlClient, Version = 4.2.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'或 其中一个依赖项。系统找不到指定的文件。
考虑this问题,我认为问题也出现在Nuget包的最后一个主要版本中。
修改
我下载了Nuget软件包并解压缩,并从\ ref \ netstandard2.0文件夹中手动复制了System.DataSqlClient.dll在我的Windows窗体项目的\ bin \ Debug文件夹中,现在它可以工作了。 Microsoft.Win32.Registry包也发生了确切的情况。所以我几乎确信这是我的错,而且我正在以错误的方式做某事,但是当我使用System.Drawing.Primitive Package进行测试时,它完美无缺,无需复制dll。现在我真的很困惑。
答案 0 :(得分:10)
我想你可能已经想出来但希望它会帮助别人 - 也浪费了一些时间。
因此,为了使一切正常,您需要在引用.NET标准库的Windows窗体项目中引用 System.Data.SqlClient 从那时起,一切都应该像魅力一样工作
正如您已经提到的, System.Data.SqlClient.dll 不在输出目录中。 听起来像.NET标准库没有抓住自己依赖的库二进制文件。 .NET Standard引用中没有“复制本地”选项,所以我也没有看到任何方法来检查或设置此行为
答案 1 :(得分:2)
我有同样的问题。
我的解决方案是在我的.NET标准库项目中为nuget添加dependecy以获取最新的System.Data.SqlClient。
答案 2 :(得分:2)
我有同样的问题。 .NETStandard程序集已添加为对我的WPF项目的引用。我需要在WPF项目的.csproj中进行更改。
https://github.com/dotnet/sdk/issues/901中提到的解决方案已解决。
步骤:
在您发现的每一行中添加以下两行。
<RestoreProjectStyle>PackageReference</RestoreProjectStyle>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>