2016-05-12 77 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