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

我读过这是由于 ServiceStack.Text dll 太大或类似的东西。所以我尝试在 Release模式下工作,由于 LLVM 处于开启状态并且链接器被转向“仅链接 SDK 程序集”。

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

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

最佳答案



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

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

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

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

关于ios - MonoTouch 调试未使用 ServiceStack.Text 构建(AOT 错误)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14368620/

10-14 23:10