当尝试使用AnyCPU以外的其他目标时,出现了更多错误,并且依赖项更难以解决。

但是当选择AnyCPU目标时,我得到的错误更少。

是否建议始终为Xamarin项目选择此目标?

最佳答案

让我们澄清一下。

Xamarin项目是一个非常通用的术语,因此没有特别的含义。为了与“平台”因素保持友好,您必须分别查看所有三个平台。

首先,请记住,您的C#源代码已由Microsoft .NET编译器(例如,Roslyn)编译为IL(中间语言)。平台规范尚未使用。那时,它只是元数据。后来,代码从IL编译为平台特定的代码。那就是真正使用平台规范的时候。


Microsoft Windows(此处是指Windows 8.1 / Windows Phone 8.1(WinRT通用应用程序)和Windows 10 / Windows Phone 10(UWP))。对所有项目使用AnyCPU。在后台,当您构建要分发的软件包时,将为Phone软件包选择除AnyCPU之外的特定平台。您不必为此担心。
Google Android。事情变得有些棘手。您制作的所有类库都可以为AnyCPU和Startup项目配置,但这与特定于平台的实际编译和链接无关。就Visual Studio元数据而言,这只是一个配置组,仅此而已。实际配置位于启动项目配置页面Android options -> Advanced中的单独选项卡上。目前,我写的是实际选择的是armeabi-v7a + x86。
苹果iOS。现在这很棘手,甚至很奇怪。您使用的所有类库都可以为AnyCPU配置,但这只是一个配置组以及android。同样,与android相同,实际的编译和链接将使用启动项目属性中使用平台特定的配置进行。现在是iOS Build -> Advanced。目前,我正在使用ARMv7 + ARM64进行分发(iPhone平台选项),使用i386 + x86_64进行开发(iPhoneSimulator平台选项)。

08-06 12:37