"错误MT2002:无法解析UIKit.UICollectionView :: set_DataSource"将Xamarin.Forms iOS应用更新为通用API之后

时间:2014-12-22 17:36:31

标签: xamarin.ios xamarin xamarin.forms

我将我的一个示例Xamarin Forms应用程序更新为新的Universal API和Xamarin.Forms 1.3.0.6286-pre4。

这两个项目的主要部分:

//App.cs in XamlMaps (the PCL part)
namespace XamlMap
{
    public class App : Application
    {
        public App ()
        {   
            MainPage = new MainPage();    //Main page is a Xaml which holds a Label
        }

        protected override void OnResume()
        {
            Debug.WriteLine("OnResume");
            base.OnResume();
        }

        protected override void OnSleep()
        {
            Debug.WriteLine("OnSleep");
            base.OnSleep();
        }

        protected override void OnStart()
        {
            Debug.WriteLine("OnStart");
            base.OnStart();
        }
    }
}

//AppDelegate.cs in XamlMaps.iOS
namespace XamlMap.iOS
{
    [Register ("AppDelegate")]
    public partial class AppDelegate : FormsApplicationDelegate
    {

        public override bool FinishedLaunching (UIApplication app, NSDictionary options)
        {
            Forms.Init();

            LoadApplication (new App ());

            return base.FinishedLaunching (app, options);
        }
    }
}

我删除了除Xamarin.Forms之外的所有其他依赖项。

当我尝试为设备构建时,我仍然收到以下错误:

  

错误MT2002:无法从“Xamarin.iOS,Version = 0.0.0.0,Culture = neutral,PublicKeyToken = 84e04ff9cfb79065”(MT2002)解析“System.Void UIKit.UICollectionView :: set_DataSource(UIKit.UICollectionViewDataSource)”引用( XamlPlayer.iOS)

当我在模拟器上运行我的项目时,一切正常:应用程序出现,一切都像以前一样工作。

知道为什么Mtouch在这个上失败了吗?

3 个答案:

答案 0 :(得分:2)

Xamarin.Forms 1.3.0基于统一 API的预览版本。自Xamarin.iOS 7.4发布以来(去年夏天)已有多次预览,并且作为预览,版本之间存在一些不兼容的更改(需要您重新编译任何引用)。

Xamarin.iOS 8.6附带的最终/稳定统一 API与预览有一些差异。您需要一个针对最终API构建的Xamarin.Forms(1.3.1 iirc)的更新版本。

答案 1 :(得分:1)

如果您没有本机库,可以将选项 - > iOS构建 - >链接行为设置为“否”链接。

答案 2 :(得分:0)

  

发生MT2002错误是因为mscorlib.dll程序集中不存在某些符号。 >您的应用程序(或第三方程序集)中的某些代码正在使用此(缺失)API,并且需要删除/重新编译>

尝试将链接器设置为链接所有程序集,上次我遇到与splat相同的问题并且它有效。