Ran*_*ain 4 xamarin.ios mvvmcross
使用HotTuna包中的FirstView骨架项目,并将Build链接器行为设置为"链接所有程序集",我收到以下错误:
System.MissingMethodException:找不到类型Cirrious.CrossCore.IoC.MvxPropertyInjector的默认构造函数
对所有MvvmCross使用nuGet包v3.1.1(4个包)
LinkerPleaseInclude文件确实有一行[MonoTouch.Foundation.Preserve(AllMembers = true)]
使用最新的稳定版本:
在PC上:Xamarin for VS 1.12.278 Xamarin.iOS 1.12.278
Mac:Xamarin.iOS 7.2.2.2
当然只有SDK的链接器行为,它运行良好.有人建议吗?
解决了; 因此,对于基本项目,按以下顺序连续出现三个错误:
System.MissingMethodException: Default constructor not found for type Cirrious.CrossCore.IoC.MvxPropertyInjector
Run Code Online (Sandbox Code Playgroud)
可以通过--linkskip = Cirrious.Core(丑陋)或在LinkerPleaseInclude.cs中包含以下内容来解决
public void Include(MvxPropertyInjector injector){
injector = new MvxPropertyInjector ();
}
Run Code Online (Sandbox Code Playgroud)下一个错误是:
Cirrious.CrossCore.Exceptions.MvxException: Failed to construct and initialize ViewModel for type {0} from locator MvxDefaultViewModelLocator - check MvxTrace for more information
Run Code Online (Sandbox Code Playgroud)
这个很难; 简单的解决方法是使用--linkskip = portableLibrary,或者在某处创建ViewModel的实例(可能在LinkerPleaseInclude.cs中); 至少在我的情况下,第二种方法的问题是,我的大多数VM都没有参数较少的构造函数,显然在这种情况下使用IOC无济于事.
最后的错误:
System.ArgumentNullException: missing source event info in MvxWeakEventSubscription
Parameter name: sourceEventInfo
Run Code Online (Sandbox Code Playgroud)
使用--linkskip = System(丑陋),或将以下内容添加到LinkerPleaseInclude.cs
public void Include(INotifyPropertyChanged changed)
{
changed.PropertyChanged += (sender, e) => {
var test = e.PropertyName;
};
}
Run Code Online (Sandbox Code Playgroud)
这足以使我的基本项目与LinkAllAssemblies,使用LLVM优化器和使用SGen收集器一起运行.
希望这能帮助任何寻求解决方案的人.
| 归档时间: |
|
| 查看次数: |
4560 次 |
| 最近记录: |