【问题标题】:Mvvmlight and Xamarin.iOS unable to find default ctorMvvmlight 和 Xamarin.iOS 无法找到默认 ctor
【发布时间】:2015-08-19 16:07:29
【问题描述】:

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

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

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

我已经在抱怨错误的类中添加了公共默认 ctor(尽管我将 PreferredConstructor 设置为原始,而不是新添加的公共 ctor)。

我感觉这个错误是误报(其他错误,但指向该代码)。

通过构建服务器使用 Xam.iOS(代码来自 VS2015)。 Xcode 正在运行 8.3 模拟器(可能需要更新以进行 8.4 测试)

【问题讨论】:

    标签: xamarin.ios mvvm-light


    【解决方案1】:

    如果链接器认为它没有被使用,它可能正在优化构造函数。尝试将链接器选项设置为“不链接”,看看它是否会再次这样做,或者甚至在其他地方新建一个类的实例,以便链接器知道使用了构造函数。你不一定要这样,但如果它消除了错误,你至少会知道原因。

    【讨论】:

    • 在默认构造函数上添加 [Preserve] 属性,防止链接器对其进行优化等待。
    • @Steve Morgan,尝试了“不链接”的链接器选项仍然崩溃.. 我正在尝试在我的 iPhone 上运行 iPhone 分发版本我正在将我的 ipa 上传到应用商店并使用测试-Flight 下载 ipa 并尝试运行应用程序立即崩溃......如果我在模拟器上运行我的应用程序,它仅适用于分发构建它导致此问题的任何建议都将被占用..
    【解决方案2】:

    [Preserve] 属性对我有用。 用它装饰构造函数并保留链接器设置。

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

    【讨论】:

      猜你喜欢
      • 2015-03-24
      • 2017-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多