2016-05-12 74 views
2

当尝试除AnyCPU以外的其他目标时,我得到更多的错误,并且依赖关系更难以解决。是否建议为Xamarin项目始终选择目标AnyCPU?

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

是否建议总是选择Xamarin项目的这个目标?

+0

AnyCPU可以使用。然而,对于iOS应用程序项目,您必须确保选择iPhone或iPhoneSimulator,因为它们是不同的。 – Cheesebaron

+0

如果我选择iPhone,而不是iPhoneSimulator,那么可以为所有项目选择目标AnyCPU。 – ProEns08

+0

是的,除您的应用程序项目以外的所有其他项目都可以是AnyCPU。 – Cheesebaron

回答

3

让我们来澄清。

Xamarin项目是一个非常通用的术语,因此没有任何特定的含义。为了与“平台”因素友好相处,您将不得不分别查看所有三个平台。

首先,请记住,你的C#源代码是由微软.NET编译器(罗斯林例如)编译成IL(中间语言)。平台规范尚未使用。那时它只是元数据。稍后,代码将从IL编译为平台特定的代码。那是在真正使用平台规范的时候。

  1. 的Microsoft Windows(这里我指的是Windows 8.1/Windows Phone的8.1(WinRT中普遍的应用程序)和Windows 10/Windows Phone的10(UWP))。所有项目均使用AnyCPU。在引擎盖下,当您构建您的包进行分发时,除了AnyCPU之外的特定平台将被选中用于电话包。你不必担心这一点。

  2. Google Android。那里的事情有点棘手。您所做的所有类库都可以配置为AnyCPU以及启动项目,但这与实际平台特定的编译和链接无关。就Visual Studio元数据而言,这仅仅成为配置组,而没有其他任何内容。实际配置位于启动项目配置页面Android options -> Advanced的单独选项卡上。目前我写这个实际的选择是armeabi-v7a + x86

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

+0

谢谢,+1,非常清楚。 – ProEns08