MvvmCross - 在启用链接所有程序集的情况下缺少视图模型参数
Posted
技术标签:
【中文标题】MvvmCross - 在启用链接所有程序集的情况下缺少视图模型参数【英文标题】:MvvmCross - missing viewmodels parameters with Link all assemblies enabled 【发布时间】:2015-11-11 02:40:52 【问题描述】:为了减小应用大小,我在 Xamarin.ios 应用上启用了“链接所有程序集”选项。不幸的是,当我启动应用程序时,传递简单的视图模型参数不起作用。在应用程序输出中,我可以看到以下警告:
mvx:Diagnostic: 1.93 Missing parameter for call to ViewModel - missing parameter isLaunchedForTheFirstTime - assuming null - this may fail for value types! <br><br>mvx:Error: 1.94 Failed to parse BoolParser parameter isLaunchedForTheFirstTime from string
我不知道要添加什么到 LinkerPleaseInclude.cs 以使其工作。有什么想法吗?
提前致谢!
编辑: 这是我的 preserve.xml 文件,其中包含所有引用的程序集:http://pastebin.com/cEmLDxqn
还有我的视图模型导航:
ShowViewModel<FirstViewModel>(new isLaunchedForTheFirstTime = true)
[ImplementPropertyChanged]
public class FirstViewModel : MvxViewModel
//properties
public void Init(bool isLaunchedForTheFirstTime)
//handling parameter
【问题讨论】:
【参考方案1】:链接器并非总是足够聪明,可以检测到项目运行所需的一切,尤其是在您使用 DI 或反射时。在这些情况下,您可以configure 它以包含它可能遗漏的程序集/类型或方法。
【讨论】:
你是对的。我对此很清楚。但问题是哪种类型负责传递 viewmodel 的参数... 我自己没有使用 mvvmcross 的经验,但是您是否尝试过添加 mvvmcross 程序集以及您的视图模型类型及其所有依赖项?如果这有效,然后慢慢缩小范围,直到它再次破裂。我以前遇到过这样的问题,我解决它的唯一方法是反复试验。不幸的是,没有快速的方法,但也许有人可以进来给我们一些想法。 我试过没有运气。即使我包含所有引用的程序集,传递参数仍然存在问题。我从我的项目中添加了 preserve.xml 文件 isLaunchedForTheFirstTime 是您的变量吗?我可以看看你的 ViewModel 类是什么样子的吗? 不要使用匿名类型,而是尝试将其设为强类型,看看是否可行。如果第一次不起作用,请尝试将Preserve
添加到类型中。以上是关于MvvmCross - 在启用链接所有程序集的情况下缺少视图模型参数的主要内容,如果未能解决你的问题,请参考以下文章
将 Xamarin.UITest 与 MvvmCross 绑定一起使用