4

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

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

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

MT 6.0.8 和最新版本的 ServiceStack dll 来自 Github。

4

1 回答 1

1

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

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

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

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

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

于 2013-01-16T22:24:30.003 回答