Xamarin iOS - AOT 编译从 mac 失败,但从 pc 构建良好
Xamrin iOS - AOT compilation fails from mac but builds fine from pc
我创建了 that simple xamarin forms app (with just iOS). It does nothing but referencing that signalr nuget 包。
当我在我的电脑上(连接到我的 mac)从 Visual Studio 构建 Debug | iPhone
时,它构建良好,尤其是 Microsoft.AspNetCore.Sockets.Abstractions.dll
的 AOT 编译(以及与所有其他 dll 一样)。
但是,当我在 Visual Studio 上为 Mac 以及 Debug | iPhone
构建相同的解决方案时,我收到以下错误:
Could not AOT the assembly
'/Users/francois/AotTests/AotTests/AotTests.iOS/obj/iPhone/Debug/mtouch-cache/Build/Microsoft.AspNetCore.Sockets.Abstractions.dll'
(MT3001) (AotTests.iOS)}
你好,
TL;DR
这已在 https://github.com/xamarin/xamarin-macios/pull/3791 中修复,我们正努力在下一个稳定版本(又名 15.7)中获得它。
您可以在此处尝试使用我们的连续构建进行修复:https://github.com/xamarin/xamarin-macios/wiki#continuous-builds。
在这种情况下,您需要来自 master 的构建(希望很快来自我们目前在 alpha/beta 中的 15.7)。
发生了什么事?
您添加的 NuGet 包 (Microsoft.AspNetCore.SignalR.Client
) 是通过新的 "package reference" 机制添加的,并且具有包含 /lib
和 /ref
文件夹的依赖项(其他包) .
在 Mac 上,MSBuild 的 ResolveAssemblyReferences
目标解析了引用程序集(在 /ref
中),将它们传递给 csc
进行编译,因此 mtouch
(我们的打包工具)也提供了这些参考程序集。
问题是我们不能对它们进行 AOT,它们只是外观,不能打包。
我们在 Xamarin.iOS 中解决了这个问题(未来可能会有更通用的 msbuild 修复)通过剥离正确的参考程序集,作为 _ReferencesFromNuGetPackages
中 Nuget 目标的输出给出。 =20=]
我创建了 that simple xamarin forms app (with just iOS). It does nothing but referencing that signalr nuget 包。
当我在我的电脑上(连接到我的 mac)从 Visual Studio 构建 Debug | iPhone
时,它构建良好,尤其是 Microsoft.AspNetCore.Sockets.Abstractions.dll
的 AOT 编译(以及与所有其他 dll 一样)。
但是,当我在 Visual Studio 上为 Mac 以及 Debug | iPhone
构建相同的解决方案时,我收到以下错误:
Could not AOT the assembly '/Users/francois/AotTests/AotTests/AotTests.iOS/obj/iPhone/Debug/mtouch-cache/Build/Microsoft.AspNetCore.Sockets.Abstractions.dll' (MT3001) (AotTests.iOS)}
你好,
TL;DR
这已在 https://github.com/xamarin/xamarin-macios/pull/3791 中修复,我们正努力在下一个稳定版本(又名 15.7)中获得它。
您可以在此处尝试使用我们的连续构建进行修复:https://github.com/xamarin/xamarin-macios/wiki#continuous-builds。
在这种情况下,您需要来自 master 的构建(希望很快来自我们目前在 alpha/beta 中的 15.7)。
发生了什么事?
您添加的 NuGet 包 (Microsoft.AspNetCore.SignalR.Client
) 是通过新的 "package reference" 机制添加的,并且具有包含 /lib
和 /ref
文件夹的依赖项(其他包) .
在 Mac 上,MSBuild 的 ResolveAssemblyReferences
目标解析了引用程序集(在 /ref
中),将它们传递给 csc
进行编译,因此 mtouch
(我们的打包工具)也提供了这些参考程序集。
问题是我们不能对它们进行 AOT,它们只是外观,不能打包。
我们在 Xamarin.iOS 中解决了这个问题(未来可能会有更通用的 msbuild 修复)通过剥离正确的参考程序集,作为 _ReferencesFromNuGetPackages
中 Nuget 目标的输出给出。 =20=]