【问题标题】:MonoTouch debug not building with ServiceStack.Text (AOT error)?MonoTouch 调试不使用 ServiceStack.Text 构建(AOT 错误)?
【发布时间】:2013-01-16 21:57:34
【问题描述】:

我刚刚开始在我的 MonoTouch 解决方案中使用 ServiceStack.Text.MonoTouch.dll。一切都在模拟器中编译并运行,但是一旦我尝试在手机上运行 Debug 构建,编译过程就会因以下错误而终止: 错误 MT3001:无法 AOT 程序集 '.../ServiceStack.Text.MonoTouch.dll'

我读过这是由于 ServiceStack.Text dll 太大或类似的东西。所以我尝试在发布模式下,由于 LLVM 处于打开状态并且链接器被转换为“仅链接 SDK 程序集”,一切正常。

这是有问题的,因为我现在无法在设备上进行调试。在调试模式下,链接器被禁用,LLVM 被关闭。有没有办法解决这个问题?

MT 6.0.8 & 最新版本的 ServiceStack dll 在 Github 上。

【问题讨论】:

    标签: ios xamarin.ios servicestack aot


    【解决方案1】:

    在调试模式下,链接器被禁用,

    否(至少默认情况下不是)。

    默认情况下,为所有设备构建(调试或发布)启用托管链接器(Link SDK)。但是,默认(Link SDK)将无法从ServiceStack.Text.dll 中删除未使用的代码,因为该程序集不是 SDK 程序集。

    您需要将选项切换为链接所有程序集以确保它得到处理。

    请注意,如果链接器不安全(例如使用反射),您可能需要在自己的代码中添加 [Preserve] 属性(或 --linkskip=ASSEMBLY)。有关示例,请参阅此 thread

    【讨论】:

    • 尝试在调试中将链接器模式更改为“链接所有程序集”,但仍然出现 AOT 错误。
    • 请编辑您的问题并添加 AOT 错误(它可能与我们在类似情况下看到的其他错误不同)。 完整构建日志也可能会有所帮助(但可能太大而无法包含在您的问题中)。
    • 添加了我得到的错误。不确定 MT3001 是否意味着什么?只是奇怪它在调试模式下是如何做到的。
    • 错误报告时间@bugzilla.xamarin.com 包括完整的构建日志。它可能仅发生在调试中的事实是调试版本(比发布版本)大得多,并且 suspected 错误与目标文件大小有关。
    • 已记录。让我们看看 Xamarin 怎么说。
    猜你喜欢
    • 1970-01-01
    • 2013-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-12
    • 2017-10-17
    • 2017-11-23
    • 2017-03-30
    相关资源
    最近更新 更多