Mvvmlight和Xamarin.iOS找不到默认的构造函数

5

我有一个在Android和WinPhone 8上运行良好的项目。当我试图在iOS上运行时,出现了以下错误:

Microsoft.Practices.ServiceLocation.ActivationException: 无法注册:x中找不到公共构造函数

其中x是流程首次遇到的任何SimpleIoc.Default.Register<T, TU>();。我已经移动了代码(如其他地方建议的)以确保所有平台特定的SimpleIoc调用都在ViewModelLocator中进行。

我已在抱怨错误的类中添加了公共默认构造函数(但我设置了PreferredConstructor为原始构造函数,而不是新添加的公共构造函数)。

我觉得这个错误是一个虚假阳性(指向该代码的东西失败了,但指向那个代码)。

使用Build Server通过Xam.iOS(代码来自VS2015)。Xcode正在运行8.3模拟器(可能需要更新以允许8.4测试)。

2个回答

2

可能是链接器正在优化构造函数,如果它认为它没有被使用。尝试将链接器选项设置为“不链接”,看看它是否再次出现,或者在其他地方创建该类的新实例,以便链接器知道构造函数正在使用。您不一定希望保持这种状态,但如果消除了错误,至少您会知道原因。


1
在默认构造函数上添加[Preserve]属性,以防止链接器优化它的等待。 - Softlion
@Steve Morgan,尝试使用链接器选项“不链接”仍然崩溃.. 我正在尝试在我的iPhone上运行iPhone分发构建我正在上传我的ipa到应用商店,并使用Test-Flight下载ipa并尝试运行应用程序,但立即崩溃... 如果我在模拟器上运行我的应用程序,它可以正常工作,只有分发构建才会导致此问题任何建议将不胜感激.. - Sanket

0

[Preserve] 属性对我很有帮助。在构造函数中使用它并保留您的链接器设置。

此属性是 Microsoft.WindowsAzure.MobileServices 命名空间的一部分。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接