对类型 'System.IConvertible' 的引用声称它是在程序集 mscorlib 中定义的

Reference to type 'System.IConvertible' claims it is defined in assembly mscorlib

每当我尝试在 iOS 框架中引用 NUNIT 数据类型时,都会收到一个编译器错误,提示找不到 IConvertible 类型

Error CS7069: Reference to type System.IConvertible' claims it is defined assemblymscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089', but it could not be found (CS7069) (logic)

我能够通过创建一个仅针对 iOS.

的全新 Xamarin.Forms 项目来重现这一点

创建后我立即添加了第二个 Xamarin.Forms 项目,这次是 PCL。

然后我需要添加 Xamarin.iOS 库,以便我可以引用 iOS 特定的 API,特别是照片 API。我通过导航到

来做到这一点

~/Library/Frameworks/Xamarin.iOS.framework/Versions/9.0.1.29/lib/mono/Xamarin.iOS/Xamarin.iOS.dll

最后,我向新的 PCL 项目添加了空白 class,并创建了一个本地范围的 NUNIT 字段。这是编译器错误发生的地方。在我当前的项目中,当我尝试获取 PHAssetCollection 中的照片数量时会发生这种情况,因为这是一种 NUNIT 数据类型。

using System;

namespace logic
{
    public class EmptyClass
    {
        public EmptyClass()
        {
            nuint test = 5;
        }
    }
}

这给了我上面提到的编译器错误。我该如何解决这个问题?这对我来说已经成为一个阻碍问题,我引用了错误的 Xamarin.iOS.dll 吗?当我扫描它们时,它在 nuget 包列表中不可用,所以我无法通过 NuGet 添加它。 NuGet 只有 Xamarin.Forms.dll 可用。

更新 1

在尝试了几种不同的组合之后,我认为我有一个可行的解决方案。我没有创建 Xamarin.Forms 库,而是创建了一个普通的 iOS PCL 库。这解决了那个问题。

我不知道为什么 Xamarin.Forms 库不起作用。它不打算用于特定于平台的代码吗?

Xamarin Forms PCL 需要与平台无关。如果您有一个需要访问 Xamarin.iOS 特定参考的 NUnit 项目,那么您需要在 iOS 项目 / iOS PCL 中构建。

Xamarin.iOS.dll 只能从 iOS 相关项目中引用。