0

我正在将一个(工作的).netstandard 库项目转换为一个多目标项目,该项目将针对:

<targetframeworks>netstandard2.1;xamarinios10;monoandroid10.0;monoandroid12.0;</targetframeworks>

我在使用 System.ComponentModel.DataAnnotations 参考时遇到问题。特别是我得到这个错误(除了.netstandard目标之外的所有东西):

The type 'DataType' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.ComponentModel.DataAnnotations, Version=2.0.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.

经过一番搜索后,我尝试添加 System.ComponentModel.Annotations (4.7.0) nuget 包。这给出了同样的错误。

在为此的 nuget 目录中,我注意到 .dll 通常所在的位置有一个文件 ' . ' - 我不知道这是否重要 (.nuget\packages\system.componentmodel.annotations\4.7.0\ref\MonoAndroid10) - .netstandard dll 按预期存在。

我还注意到(一个单独的)Xamarin.Android 项目似乎使用了位于 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\ReferenceAssemblies\Microsoft\ 中的 System.ComponentModel.DataAnnotations.dll框架\Xamarin.iOS\v1.0

我不确定 Mono.Android(或 ios 等效版本)的正确版本是否被定位,或者我必须指定特定的程序集版本,或者我是否完全走错了路?

在此先感谢,保罗。

4

1 回答 1

0

正如上面的评论所提到的,为了解决这个问题,我将一些有问题的代码(使用 System.ComponentModel.DataAnnotations)移到了一个以 .netstandard2.1 为目标的单独项目中,然后从我的多目标项目中引用了这个项目。

于 2022-02-10T15:45:04.680 回答