无法在.Net Standard 2.0类库中加载文件或程序集错误

时间:2017-08-17 15:53:01

标签: sqlclient .net-standard-2.0

我有一个.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。现在我真的很困惑。

3 个答案:

答案 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中提到的解决方案已解决。

步骤:

  1. 在记事本中编辑核心.csproj文件。
  2. 在您发现的每一行中添加以下两行。

    <RestoreProjectStyle>PackageReference</RestoreProjectStyle>
    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
    
  3. 清洁并重建您的解决方案。

Yes... I used Notepad.