【问题标题】:Xamarin+Monotouch: Could not AOT the assembly '.../obj/iPhone/Release/mtouch-cache/Build/Touch.exe' (MT3001)Xamarin+Monotouch:无法 AOT 程序集 '.../obj/iPhone/Release/mtouch-cache/Build/Touch.exe' (MT3001)
【发布时间】:2013-08-23 06:28:25
【问题描述】:

当启用“链接器行为:链接所有程序集”选项时,我在编译期间收到以下错误:

错误 MT3001:无法 AOT 程序集 '.../obj/iPhone/Release/mtouch-cache/Build/Touch.exe' (MT3001)

有趣的是,使用“Link Nothing”或“Link SDK Assemblies Only”的解决方案编译得很好。

任何想法如何解决或至少诊断此问题? 我正在使用 Xamarin Studio + MonoTouch(最新的稳定版本)

谢谢!

【问题讨论】:

    标签: ios xamarin.ios linker xamarin


    【解决方案1】:

    查看完整的构建输出(您可以在 Xamarin Studio 的错误面板中找到它,您可以单击一个按钮来显示它)。

    如果您不了解构建输出中发生的情况,请随时再次询问。

    【讨论】:

    • 我有这两个警告。但这只是一个警告。可能是链接器如何删除部分代码(假设它未使用)并删除对 system.net.http 的引用?警告 MT3005:程序集 'HostMe.Core,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null' 的依赖项 'System.Net.Http,Version=1.5.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a' 不是成立。请查看项目的参考资料。警告 MT3006:无法计算项目的完整依赖关系图。这将导致构建时间变慢,因为 Xamarin.iOS AOT 编译以代码 134 退出
    • 这其实正是问题所在:Xamarin.iOS 不包含 System.Net.Http,v1.5.0.0(它是 v2.0.5.0,它公开的 API 可能不同,当 HostMe.Core 使用 System.Net.Http 的 Xamarin.iOS 版本没有的 API 时,导致 AOT 编译器抱怨)。解决方案是创建一个新的 Xamarin.iOS 库项目并在其中添加 HostMe.Core 的源代码,以便创建一个可以在主项目中引用的适当 Xamarin.iOS 库。
    • HostMe.Core 是 PCL 项目,如果我们切换到本机 Xamarin.iOS 项目,我们将失去从 PCL 获得的所有好处。有没有机会强制使用我拥有的那个库(http.dll v1.5 pcl)?
    • 我试图包含 System.Net.Http (v 1.5.0.0) Xamarin.iOS 项目(使用 PCL),现在又遇到了另一个错误:MonoTouch Business version 6.4.1 using framework:/ Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk AOT 编译退出,代码 134,错误 MT3001:无法 AOT 程序集 '/Users/alexeys/Desktop/Sources/ Touch/obj/iPhone/Release/mtouch-cache/Build/Touch.exe'
    • 你能粘贴完整的构建输出吗?
    猜你喜欢
    • 1970-01-01
    • 2017-03-25
    • 2019-03-03
    • 1970-01-01
    • 2017-07-15
    • 2020-07-17
    • 1970-01-01
    • 2011-05-24
    • 1970-01-01
    相关资源
    最近更新 更多