【发布时间】:2017-10-18 14:07:42
【问题描述】:
我有一个引用 System.ComponentModel.Annotations (4.3.0) NuGet 包的 .NET Standard 1.4 类库。
然后我从 .NET Framework 4.6.2 测试项目中引用这个类库。它构建良好,但在运行时出现以下错误:
System.IO.FileLoadException 发生 HResult=0x80131040
Message=无法加载文件或程序集 'System.ComponentModel.Annotations,版本=4.1.0.0,文化=中性, PublicKeyToken=b03f5f7f11d50a3a' 或其依赖项之一。这 定位程序集的清单定义与程序集不匹配 参考。 (HRESULT 异常:0x80131040)
我尝试从 net462 项目中添加对 System.ComponentModel.Annotations (4.3.0) NuGet 包的引用,但这没有任何区别。
我尝试从 net462 项目中添加对 .NET Standard 库的引用,但仍然没有成功。
我在这里遗漏了什么吗?这是一个已知的错误,如果是,有解决办法吗?
非常感谢任何帮助!
【问题讨论】:
-
使用bindingRedirect attribute in app.config 强制使用4.3.0.0 lib
-
对于缺少 Version=4.2.0.0 的任何人:从 NuGet Gallery 安装 System.ComponentModel.Annotations 4.4.1 已为我修复。
-
这个问题似乎在 .Net Core 2.1 中再次恶化(与 .Net 4.7.1 结合使用)。 System.ComponentModel.Annotations 4.5.0 似乎再也找不到 Version=4.2.0.0,迫使您返回 bindingRedirect oldVersion="4.2.0.0" newVersion="4.0.0.0"/>。奇怪的是,微软显然无法用 System.ComponentModel.Annotations 解决这个问题。他们已经在那里将近两年了。
-
@JRB 你的建议对我不起作用,但对我来说是一个调整过的。我最终得到了
<bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.2.1.0" />,它解决了这个问题。 -
@t3chb0t 救了我的命!我试图使用 .NET Framework 4.8 WebForms 项目中的 .NET Standard 2.0 库,但出现此错误。添加您在 web.config 中提到的内容,并将 System.ComponentModel.Annotation v5.0.0 作为 nuget 包添加到项目中后,一切正常。谢谢!
标签: .net visual-studio-2017 .net-standard .net-standard-1.4