System.ComponentModel.DataAnnotations 的多目标库(monoandroid、xamarin ios)问题

Multi-targetted Library (monoandroid, xamarinios) issue with System.ComponentModel.DataAnnotations

我正在将一个(工作中的).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.7.0\ref\MonoAndroid10) - .netstandard dll 按预期在那里。

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

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

提前致谢, 保罗.

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