我有一个.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'或其依赖项之一.该系统找不到指定的文件.
考虑到这个问题,我认为问题也出现在Nuget包的最后一个主要版本中.
编辑
我下载了Nuget软件包并解压缩,并从\ ref \netstandard2.0文件夹中手动复制了System.DataSqlClient.dll在我的Windows窗体项目的\ bin\Debug文件夹中,现在它可以工作了.Microsoft.Win32.Registry包也发生了确切的情况.所以我几乎确信这是我的错,而且我正在以错误的方式做某事,但是当我使用System.Drawing.Primitive Package进行测试时,它完美无缺,无需复制dll.现在我真的很困惑.
我对 netstandard 非常陌生,当我想运行具有引用 netstandard 库的 .Net Framework(控制台)的调试模式时,我刚刚遇到异常。
所以我后来发现如果我将 System.IO.Ports 从 nuget 安装到 .Net Framework 项目上,异常就会消失。但是这个库已经安装到 netstandard 项目中。
所以我非常怀疑,如果我使用另一个 .net 框架项目中的 netstandard 项目,我是否需要安装 netstandard 项目所需的所有库。
我一定遗漏了一些东西,任何熟悉 netstandard 的人都可以给我一些见解。
非常感谢您的意见!
请注意:这是不是一个重复无法加载文件或程序集“System.ComponentModel.Annotations,版本= 4.1.0.0。与链接的问题不同,此问题仅在发布应用程序之后发生。正如您将在下面看到的那样,我尝试了该帖子中提出的所有解决方案,但均未成功。
在WPF .Net Framework 4.6.1项目中,该问题引用了.Net Standard 2.0库,该库本身引用了System.ComponentModel.Annotations NuGet包。
该问题在以下项目中再现:https : //github.com/kaitlynbrown/DataAnnotationsError
重现该错误:
您将看到以下错误:
我已经尝试了多种方法来解决此问题,包括:
在WPF项目的.csproj中添加以下行:
<RestoreProjectStyle>PackageReference</RestoreProjectStyle>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
Run Code Online (Sandbox Code Playgroud)
在App.config中添加以下绑定重定向:
<runtime>
<dependentAssembly>
<assemblyIdentity name="System.ComponentModel.Annotations" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.2.0.0"/>
</dependentAssembly>
</runtime>
Run Code Online (Sandbox Code Playgroud)
在WPF项目中添加对System.ComponentModel.Annotations NuGet包的引用
这些都不起作用。
请注意:问题不在 Visual Studio中构建和运行。我能够做到这一点而没有错误。尝试发布应用程序并随后运行发布的应用程序时,会发生此问题。
.net c# .net-assembly assembly-binding-redirect .net-standard