2016-05-12 2 views
2

Wenn ich ein anderes Ziel als AnyCPU versuche, bekomme ich mehr Fehler und die Abhängigkeiten sind schwieriger zu lösen.Ist es ratsam, immer die Ziel AnyCPU für Xamarin-Projekte zu wählen?

Aber wenn AnyCPU Ziel wählen, bekomme ich weniger Fehler.

Ist es ratsam, immer dieses Ziel für Xamarin-Projekte zu wählen?

+0

AnyCPU ist in Ordnung zu verwenden. Bei Anwendungsprojekten für iOS müssen Sie jedoch sicherstellen, dass Sie entweder iPhone oder iPhoneSimulator auswählen, da sie unterschiedlich sind. – Cheesebaron

+0

Wenn ich das iPhone und nicht den iPhoneSimulator auswähle, ist es in Ordnung, das Ziel AnyCPU für alle Projekte auszuwählen. – ProEns08

+0

Ja, alle anderen Projekte außer Ihrem Anwendungsprojekt können AnyCPU sein. – Cheesebaron

Antwort

3

Lassen Sie uns klären.

Xamarin-Projekt ist ein sehr allgemeiner Begriff und bedeutet daher nichts bestimmtes. Um mit dem Faktor "Plattform" vertraut zu werden, müssen Sie alle drei Plattformen separat betrachten.

Beachten Sie zunächst, dass Ihr C# -Quellcode von Microsoft .NET Compiler (Roslyn zum Beispiel) in IL (Intermediate Language) kompiliert wird. Die Plattformspezifikation wird noch nicht verwendet. In diesem Moment sind es nur Metadaten. Später wird der Code von IL zu plattformspezifischem Code kompiliert. Das ist, wenn Plattformspezifikation wirklich verwendet wird.

  1. Microsoft Windows (damit meine ich Windows 8.1/Windows Phone 8.1 (WinRT Universal-App) und Windows 10/Windows Phone 10 (UWP)). Verwenden Sie AnyCPU für alle Projekte. Unter der Haube, wenn Sie Ihre Pakete für den Vertrieb erstellen, wird eine bestimmte Plattform als AnyCPU für Phone-Pakete ausgewählt. Sie müssen sich darüber keine Sorgen machen.

  2. Google Android. Dort wird es etwas knifflig. Alle Klassenbibliotheken, die Sie erstellen, können für AnyCPU sowie das Startup-Projekt konfiguriert werden, aber das hat nichts mit der tatsächlichen plattformspezifischen Kompilierung und Verknüpfung zu tun. Dies wird zu einer reinen Konfigurationsgruppe hinsichtlich der Visual Studio-Metadaten und sonst nichts. Die tatsächliche Konfiguration befindet sich auf einer separaten Registerkarte in der Konfigurationsseite des Startprojekts Android options -> Advanced. Im Moment schreibe ich diese die tatsächliche Wahl ist armeabi-v7a + x86.

  3. Apple iOS. Jetzt ist es schwierig und sogar komisch. Alle Klassenbibliotheken, die Sie verwenden, können für AnyCPU konfiguriert werden, aber dies ist nur eine Konfigurationsgruppe sowie für Android. Nochmal, und dies ist das gleiche mit Android, tatsächliche Kompilierung und Verknüpfung wird mit plattformspezifische Konfiguration aus den Eigenschaften des Startprojekts vorgenommen werden. Jetzt ist es iOS Build -> Advanced. Im Moment verwende ich ARMv7 + ARM64 für den Vertrieb (iPhone-Plattform-Option) und i386 + x86_64 für die Entwicklung (iPhoneSimulator-Plattform-Option).

+0

Danke, +1, sehr klar. – ProEns08

Verwandte Themen