参考类型' System.IConvertible'声称它是在程序集mscorlib中定义的

时间:2015-10-17 02:34:13

标签: ios macos xamarin mono xamarin.forms

无论何时我尝试在iOS框架中引用NUNIT数据类型,我都会收到编译错误,说它无法找到IConvertible类型

  

错误CS7069:引用类型System.IConvertible' claims it is defined assembly mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089',但无法找到(CS7069)(逻辑)

我能够通过创建一个仅针对iOS的全新Xamarin.Forms项目来重现这一点。

enter image description here

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

enter image description here

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

来做到这一点
  

〜/库/框架/ Xamarin.iOS.framework /版本/ 9.0.1.29 / LIB /单声道/ Xamarin.iOS / Xamarin.iOS.dll

最后,我在新的PCL项目中添加了一个空白类,并创建了一个本地范围的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库不起作用。它不打算用于特定于平台的代码吗?

1 个答案:

答案 0 :(得分:1)

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

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