我将我的一个示例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在这个上失败了吗?
答案 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相同的问题并且它有效。