【问题标题】:Xamarin.iOS app will not build to device but does build to simulator; Realm issue?Xamarin.iOS 应用程序不会构建到设备,但会构建到模拟器;境界问题?
【发布时间】:2017-12-20 19:40:34
【问题描述】:

针对 iOS 设备时出现以下构建错误:

MTOUCH:错误 MT2101:无法解析引用“System.Void* System.Runtime.CompilerServices.Unsafe::AsPointer(!!0&)”,引用自方法“T Realms.MarshaledVector`1::MarshalElement” (System.Int32)' 在'System.Runtime.CompilerServices.Unsafe, Version=4.0.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'。

具体来说,我认为参考这里:T Realms.MarshaledVector

这在模拟器上构建良好,但在定位设备时失败。已安装 Realm NuGet 包。实际上,我只是将其删除并重新安装以查看是否可以修复它;它没有。

任何人都知道尝试运行此操作的其他任何内容,或者仅当目标是设备时才可能导致此构建错误?

iOS version: 11.2.1 (15C153)
OSX version: 10.13.2
Visual Studio Community Version: 7.3.2 (build 12)
Xcode: 9.2 (9C40b)

...稍后...

好吧,看起来它绝对是领域。甚至这样做的行为:

using Realms;
var settingsFilename = "/some/path/settings.realm";
var Config = new RealmConfiguration(settingsFilename);

导致 Visual Studio Community 无法构建项目并出现上述错误。我的 AppDelegate FinishedLaunching 中有这段代码。

接下来我会试着把里面的所有东西都去掉,看看我猜会发生什么。

...稍后...

好的,至少现在参考错误不同了。

MTOUCH:错误 MT2101:无法解析引用“System.Void* System.Runtime.CompilerServices.Unsafe::AsPointer(!!0&)”,引用自方法“T Realms.MarshaledVector1::MarshalElement(System.Int32)' in 'System.Runtime.CompilerServices.Unsafe, Version=4.0.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. Error processing method: 'T Realms.MarshaledVector1”: :MarshalElement(System.Int32)' 在程序集中:'Realm.dll' 无法解析 System.Void* System.Runtime.CompilerServices.Unsafe::AsPointer(!!0&)

它特别呼吁:in assembly: 'Realm.dll'

【问题讨论】:

    标签: xamarin xamarin.ios realm


    【解决方案1】:

    所以至少现在我做了什么,在这之后我吃了一整天,让我的进度为 0。我开始了一个新项目,安装了相同的依赖项

    • 领域 (2.1.0)
    • Serilog (2.6.0)
    • Serilog.Sinks.Xamarin (0.1.29)
    • System.Reactive (3.1.1)
    • Xam.Plugin.Connectivity (3.0.3)
    • Xamarin.Auth (1.5.0.3)

    没有错误。

    所以我回到了我客户的项目,删除了packages.config 中的所有包并重新安装了它们。它似乎不再出现此构建错误(无法解析引用 'System.Void* ...)。

    在调试场景下,有时似乎无法正确部署到设备,并出现以下错误:

    dyld:库未加载:@rpath/libmonosgen-2.0.dylib

    但是清理项目并再次尝试,似乎可以解决它。我也可以关闭 Incremental Builds 下:

    Project Settings -> Build -> iOS Build -> Enable Incremental Builds

    这也将解决他的 dyld 加载问题。

    根据其他问题,Visual Studio Community missing developer tools for iOS 11.2.1, cannot debug,评论者还建议从解决方案中卸载项目并重新加载以解决问题。

    所以我要算我的祝福,然后继续前进,直到它再次爆炸。我应该注意到这确实发生在我将这个项目中间的 Visual Studio Community 升级到:7.3.2 (build 12) 之后。同样,它似乎只在尝试在设备上进行调试时发生,在本例中是运行 iOS 11.2.1 (15C153) 的 iPhone X。我还没有尝试过其他设备/操作系统版本,因为这再次消耗了我昨天的一整天。

    【讨论】:

      【解决方案2】:

      与 Realm 2.0.0 相同的错误。

      我是如何解决的:

      • 安装了 NuGet 包System.Runtime.CompilerServices.Unsafe
      • 删除了项目中的System.Runtime.CompilerServices.Unsafe lib 参考文献
      • 通过选择位于 packages 文件夹中的文件 System.Runtime.CompilerServices.Unsafe.dll 手动重新添加 lib 项目。 (第 1 步中安装的那个)

      希望对您有所帮助!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-02-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-03
        相关资源
        最近更新 更多