我有一本书.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相关问答推荐

PowerShell 5.1和7在使用证书时的区别

当数据大量分布在微服务中时,我应该如何设计后端?

在 Inno Setup 中判断给定服务的依赖服务

IIS 发布 ASP.NET Core 应用程序而不关闭 IIS 网站

C# 中的批量更新

C# 时间跨度毫秒与 TotalMilliseconds

.NET 世界是否有 Maven 替代方案或端口?

(C# 7.2)私有保护修饰符的用例是什么?

托管和非托管代码、内存和大小有什么区别?

如何使用 log4net 记录跟踪消息?

将双精度转换为带有 N 个小数的字符串,点作为小数分隔符,并且没有千位分隔符

什么是 Hashtable 的通用版本?

Double.TryParse 或 Convert.ToDouble - 哪个更快更安全?

如何在 C# 中将 null 值设置为 int?

CryptographicException 未处理:系统找不到指定的文件

微软内部 PriorityQueue 中的错误?

获取系统中已安装的应用程序

作者主签名的时间戳发现了一个建链问题:UntrustedRoot: self-signed certificate in certificate chain

在 WPF 中设置 Tab 键顺序

Uri.Host 和 Uri.Authority 有什么区别