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

Is it advised to choose always the target AnyCPU for Xamarin projects?

尝试除 AnyCPU 以外的其他目标时,我会遇到更多错误,并且依赖关系更难解决。

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

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

让我们澄清一下。

Xamarin 项目是一个非常通用的术语,因此没有任何具体含义。为了熟悉 "platform" 因素,您必须分别查看所有三个平台。

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

  1. 微软Windows(这里我指的是Windows8.1/WindowsPhone8.1(WinRT通用应用程序)和 Windows 10/Windows Phone 10 (UWP))。对所有项目使用 AnyCPU。在幕后,当您构建要分发的包时,将为 Phone 包选择 AnyCPU 以外的特定平台。您不必为此担心。

  2. GoogleAndroid。那里的事情变得有点棘手。您制作的所有 class 库都可以针对 AnyCPU 以及启动项目进行配置,但这与实际平台特定的编译和链接无关。就 Visual Studio 元数据而言,这只是一个配置组,仅此而已。实际配置位于启动项目配置页面 Android options -> Advanced 的单独选项卡上。在我写这篇文章的那一刻,实际的选择是 armeabi-v7a + x86.

  3. 苹果iOS。现在它很棘手,甚至很奇怪。您使用的所有 class 库都可以为 AnyCPU 配置,但这只是一个配置组以及 android。同样,这与 android 相同,实际编译和链接将使用启动项目属性中的平台特定配置进行。现在是iOS Build -> Advanced。目前我正在使用 ARMv7 + ARM64 进行分发(iPhone 平台选项)和 i386 + x86_64 进行开发(iPhone模拟器平台选项)。