使用HotTuna包中的FirstView骨架项目,并将构建链接器行为设置为"链接所有程序集",我得到以下错误:
系统。MissingMethodException:未找到Cirrious.CrossCore.IoC.MvxPropertyInjector类型的默认构造函数
使用NuGet包v3.1.1为所有MvvmCross(4个包)
LinkerPleaseInclude文件没有行[MonoTouch.Foundation。保存(AllMembers = true)]
使用最新的稳定版本:
电脑:Xamarin for VS 1.12.278Xamarin的。iOS 1.12.278
麦克:Xamarin的。iOS 7.2.2.2
当然,只有SDK的链接器行为,它运行良好。有什么建议吗?
已解决;因此,在基本项目中,有三个连续的错误,顺序如下:
System.MissingMethodException: Default constructor not found for type Cirrious.CrossCore.IoC.MvxPropertyInjector
可以通过——linkskip=Cirrious来解析。Core(丑),或者在linkpleesinclude .cs
中包含以下内容public void Include(MvxPropertyInjector injector){ injector = new MvxPropertyInjector (); }
下一个错误是:
Cirrious.CrossCore.Exceptions.MvxException: Failed to construct and initialize ViewModel for type {0} from locator MvxDefaultViewModelLocator - check MvxTrace for more information
这个很难;简单的修复当然是做一个——linkskip=portableLibrary,或者在某个地方创建一个ViewModel的实例(也许在LinkerPleaseInclude.cs);第二种方法的问题是,至少在我的情况下,我的大多数VM都没有一个无参数的构造函数,显然在这种情况下使用IOC是没有用的。
最后一个错误:
System.ArgumentNullException: missing source event info in MvxWeakEventSubscription
Parameter name: sourceEventInfo
要么使用——linkskip=System(丑陋),要么在linkpleaseinclude .cs中添加以下内容
public void Include(INotifyPropertyChanged changed)
{
changed.PropertyChanged += (sender, e) => {
var test = e.PropertyName;
};
}
这足以让我的基本项目运行LinkAllAssemblies,使用LLVM优化器,并使用SGen收集器。
当我的XCode与Mac上最新的Xamarin不同步时,我遇到了这个问题。升级到最新的XCode解决了这个问题。