Visual studio 2017 VS 2017 MS测试,多目标参考Can';t一些加载组件 安装程序
Visual studio 2017 VS 2017 MS测试,多目标参考Can';t一些加载组件 安装程序,visual-studio-2017,mstest,.net-standard,Visual Studio 2017,Mstest,.net Standard,一个基本库(Lib.Core),以NetStandard 2.0和NetFx 4.6.1为目标,并引用System.ComponentModel.Annotations 一种消费者库(consumer.Core),以NetStandard2.0为目标,引用基本库(Lib.Core)并引用System.ComponentModel.Annotations 4.4.0.0 以NetFx 4.6.1为目标的使用者库(consumer.Full),引用基本库(Lib.Core)和核心使用者库(consu
- 一个基本库(Lib.Core),以NetStandard 2.0和NetFx 4.6.1为目标,并引用System.ComponentModel.Annotations
- 一种消费者库(consumer.Core),以NetStandard2.0为目标,引用基本库(Lib.Core)并引用System.ComponentModel.Annotations 4.4.0.0
- 以NetFx 4.6.1为目标的使用者库(consumer.Full),引用基本库(Lib.Core)和核心使用者库(consumer.Core),并引用System.ComponentModel.DataAnnotations 4.0.0
- 以NetFx 4.6.1为目标并引用NetFx使用者库(consumer.Full)的MS测试项目
我需要在测试项目中配置一些东西来实现这一点吗?您的
Lib.Core
项目取决于System.ComponentModel.Annotations
NuGet包。由于Consumer.Core
项目引用了Lib.Core
,并且只支持netstandard2.0目标,这会导致对高于包含框架的程序集版本的引用成为依赖项闭包的一部分
由于测试项目不会以过渡方式获取NuGet包,因此需要手动将System.ComponentModel.Annotations
包安装到测试项目中。使用此NuGet引用,测试通过
请注意,在这种情况下,如果测试项目是基于SDK的项目(.NET核心单元测试模板,目标框架更改为
net461
),则甚至不会通过传递方式获取NuGet引用,因为测试项目只会从完整的框架“切片”获取引用转换项目到项目引用的。(可以讨论这是否是一个bug)我理解为什么直接引用没有通过,但我不理解它如何认为它需要4.2.0.0版本。在4.6.1和标准2.0之间是否隐藏在外观中?是的,.net标准中的版本高于.net framework(参见示例),甚至程序集名称也不同。最简单的修复方法是安装NuGet软件包或将测试项目更改为setPackageReference