MonoTouch调试没有使用ServiceStack.Text构建(AOT错误)?

时间:2013-01-16 21:57:34

标签: ios xamarin.ios servicestack aot

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

1 个答案:

答案 0 :(得分:1)

  

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

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

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

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

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