Xamrin iOS - AOT编译从mac失败,但从pc构建良好

时间:2018-04-04 08:22:00

标签: visual-studio xamarin xamarin.forms xamarin.ios visual-studio-mac

我创建了that simple xamarin forms app(仅使用iOS)。除了引用signalr nuget包之外,它什么也没做。

当我从我的电脑上的Visual Studio(连接到我的mac)构建Debug | iPhone时,它构建得很好,尤其是Microsoft.AspNetCore.Sockets.Abstractions.dll(以及所有其他dll)的AOT编译。

但是,当我在Visual Studio for Mac上构建相同的解决方案时,也在Debug | iPhone上,我收到以下错误:

  

无法AOT组装   ' /Users/francois/AotTests/AotTests/AotTests.iOS/obj/iPhone/Debug/mtouch-cache/Build/Microsoft.AspNetCore.Sockets.Abstractions.dll'   (MT3001)(AotTests.iOS)}

1 个答案:

答案 0 :(得分:3)

的Bonjour,

TL; DR

这已在https://github.com/xamarin/xamarin-macios/pull/3791中修复,我们正试图在下一个稳定版本(即15.7)中获取它。

您可以在此处使用我们的连续版本尝试修复:https://github.com/xamarin/xamarin-macios/wiki#continuous-builds 在这种情况下,您需要来自master的构建(希望很快就会从我们之前的15.7以前的alpha / beta中获得)。

发生了什么事?

您添加的NuGet包(Microsoft.AspNetCore.SignalR.Client)是通过新的“包引用”机制添加的,并且具有包含/lib/ref文件夹的依赖项(其他包)。

在Mac上,MSBuild的ResolveAssemblyReferences目标解析了引用程序集(在/ref中),将它们传递给csc进行编译,因为mtouch(我们的打包工具) )还给了那些参考组件 问题在于我们无法对它们进行评估,它们只是外立面而且不能被打包。

我们通过剥离正确的引用程序集解决了Xamarin.iOS中的问题(未来可能会有更常见的msbuild修复),由_ReferencesFromNuGetPackages中的Nuget目标作为输出提供。