我有一本书.NET标准1.4类库,该类库引用了该系统.组件模型.注释(4.3.0)NuGet软件包.

然后,我从.NET Framework 4.6.2测试项目中引用了这个类库.它构建得很好,但是在运行时我得到以下错误:

系统伊奥.出现FileLoadException HResult=0x8013Could not load file or assembly 'System.ComponentModel.Annotations, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'

我试着给系统添加一个参考.组件模型.Annotations(4.3.0)是net462项目的NuGet包,但这没有任何区别.

我试着添加一个对.NET标准库,但仍然没有运气.

我错过什么了吗?这是一个已知的错误吗?如果是,有解决方法吗?

非常感谢您的帮助!

推荐答案

在许多情况下,可以通过将以下代码添加到测试项目的csproj文件来解决此问题:

<PropertyGroup>
  <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
  <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
</PropertyGroup>

这会迫使构建过程在输出目录中创建一个.dll.config文件,其中包含所需的绑定重定向.

原因是"classic "csproj测试项目是真正的"库",默认情况下不需要绑定重定向.但运行单元测试需要这样做.只有当被引用的项目需要这些重定向才能正常工作时,这才成为一个问题.这通常在直接安装引用库使用的所有NuGet软件包时起作用,但对于新的PackageReference样式的NuGet软件包,它就不起作用了.

查看此修复程序有帮助的其他实例:

Could not load file or assembly Microsoft.Extensions.DependencyInjection.Abstractions, Version=1.1.0.0

When using .Net Standard 1.4 in a library and .Net framework 4.6.1 in and application, unable to load file System.IO.FileSystem, Version=4.0.1.0

.net相关问答推荐

NETSDK1083:无法识别指定的 RuntimeIdentifierwin10-x64

Npgsql Minimum Pool Size 似乎没有被考虑在内

线程安全性的单元测试?

为什么循环引用被认为是有害的?

如何将浮点数向上舍入到 C# 中最近的 int?

SubscribeOn 和 ObserveOn 有什么区别

如何在 .NET 中将字符串转换为字节数组?

如何将 UI Dispatcher 传递给 ViewModel

Int 到字节数组

List 和 IEnumerable 的实际区别

文件按文件名模式存在

.Net 正则表达式:单词字符 \w 是什么?

Find() 和 First() 抛出异常,如何改为返回 null?

如何在 WPF 中的 Xaml 文件中添加注释?

获取磁盘上文件的大小

如何比较泛型类型的值?

功能说明

记录器包装器最佳实践

如何从 HashSet 中检索实际项目?

App.config:用户与应用程序范围