我有一个名为AB的.NetStandard 2.0项目,引用了A和B两个项目。A是一个.Net Standard 2.0项目,需要System.ComponentModel.DataAnnotation,其来自于System.ComponentModel.Annotations, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a。B是一个.NetFramework4.6.1项目,也需要System.ComponentModel.DataAnnotation,但其来源于System.ComponentModel.DataAnnotations, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35。
当构建AB程序集时,它只会发出一个System.ComponentModel.DataAnnotation.dll,恰好来自于B项目。因此,在使用AB程序集时,无法实例化A项目中的对象,会出现以下错误:
System.IO.FileNotFoundException: 未能加载文件或程序集 'System.ComponentModel.Annotations, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' 或它的某一个依赖项。
但是B项目中的对象可以正常工作。该如何解决问题呢?
请注意,只要使用者是.Net消费者(标准版或框架版),就不会出现问题。问题发现在我们的非.Net消费者开始使用我们的库时。
当构建AB程序集时,它只会发出一个System.ComponentModel.DataAnnotation.dll,恰好来自于B项目。因此,在使用AB程序集时,无法实例化A项目中的对象,会出现以下错误:
System.IO.FileNotFoundException: 未能加载文件或程序集 'System.ComponentModel.Annotations, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' 或它的某一个依赖项。
但是B项目中的对象可以正常工作。该如何解决问题呢?
请注意,只要使用者是.Net消费者(标准版或框架版),就不会出现问题。问题发现在我们的非.Net消费者开始使用我们的库时。