我刚刚开始在 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/