【发布时间】:2019-08-13 23:01:19
【问题描述】:
我有一个名为 AB 的 .NetStandard 2.0 项目,它引用了项目 A 和 B。 项目 A 是一个 .Net Standard2.0,它需要 System.ComponentModel.DataAnnotation 来自 System.ComponentModel.Annotations,版本=4.2.0.0,文化=中性,PublicKeyToken=b03f5f7f11d50a3a。
然而,项目 B 是一个 .NetFramework4.6.1 项目,它还需要 System.ComponentModel.DataAnnotation 解决方案 System.ComponentModel.DataAnnotations,版本=4.0.0.0,文化=中性,PublicKeyToken=31bf3856ad364e35。
在构建 AB 程序集时,它只发出一个 System.ComponentModel.DataAnnotation.dll,恰好来自项目 B。
因此,在使用 AB 程序集时,项目 A 中的对象无法实例化并出现错误:
System.IO.FileNotFoundException:无法加载文件或程序集 'System.ComponentModel.Annotations,版本=4.2.0.0,文化=中性, PublicKeyToken=b03f5f7f11d50a3a' 或其依赖项之一。
但是项目 B 中的对象正常工作。
我该如何解决这个问题?
请注意,只要消费者是 .Net 消费者(标准或框架)就没有问题。当我们的非 .Net 消费者开始使用我们的库时,问题就被发现了。
【问题讨论】:
-
如果有解决办法,请分享一下吗?
-
我们不得不使用多目标。
标签: c# .net-framework-version .net-standard-2.0