请注意:不是Could not load file or assembly 'System.ComponentModel.Annotations, Version=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>
在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>
在WPF项目中添加对System.ComponentModel.Annotations NuGet包的引用
这些都没有奏效。
请注意:问题是不在Visual Studio中构建和运行。我能够毫无错误地做到这一点。尝试发布应用程序并随后运行已发布的应用程序时会出现此问题。
答案 0 :(得分:3)
Visual Studio中与ClickOnce发布有关的错误似乎是发布逻辑试图变得聪明并且有助于#34;排除它认为是框架一部分的DLL。当然,这会在混合使用.NET标准软件包替换完整框架功能时导致各种问题。
参考:
我还没有亲自尝试过GitHub问题中建议的解决方法,但是System.Net.Http.dll遇到了类似的问题,该问题通过显式添加从NuGet包到项目的dll链接得到解决文件(添加现有&gt;显示所有文件&gt;添加为链接)并设置&#34;始终复制。&#34;要明确:我的意思是将dll添加为&#34;内容&#34; - 不添加对dll的引用。链接的DLL将始终复制到发布输出。
答案 1 :(得分:0)