我刚开始在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。答案 0 :(得分:1)
在调试模式下,链接器被禁用,
否(至少不是默认情况下)。
默认情况下,为所有设备构建(调试或发布)启用托管链接器(Link SDK)。但是,默认(Link SDK)将无法从ServiceStack.Text.dll
中删除未使用的代码,因为该程序集不是 SDK 程序集。
您需要将选项切换为链接所有程序集以确保其得到处理。
请注意,如果链接器不安全(例如使用反射),则可能需要在自己的代码上添加[Preserve]
属性(或--linkskip=ASSEMBLY
)。有关示例,请参阅此thread。