Problembehandlung bei der Standardinstallation von Xamarin mit Visual Studio 2017 und Windows 10 Creators Update

Problembehandlung bei der Standardinstallation von Xamarin mit Visual Studio 2017 und Windows 10 Creators Update

Da ich vor Kurzem begonnen habe, Xamarin für die plattformübergreifende Entwicklung zu verwenden, dachte ich, es wäre schön, mit der Community zu teilen, wie ich einige der Probleme überwunden habe, die mich eine Weile gestolpert haben, als ich mich damit vertraut gemacht habe. Dies ist nicht wirklich ein normales „Erste Schritte mit Xamarin“-Tutorial – es gibt bereits viele davon, wie dieses hier – aber hoffentlich findet jeder, der mit Xamarin beginnt, es nützlich.

Bevor wir beginnen – was ist Xamarin und warum sollte ich es verwenden?

Mit den in Visual Studio integrierten Xamarin-Tools können Entwickler native Anwendungen in C# für Windows-, Mac- und Linux-Geräte erstellen. Anstatt also drei verschiedene Codebasen für drei verschiedene Plattformen zu schreiben und zu verwalten, können Entwickler ihren Code einfach einmal schreiben und ihn in verschiedenen App-Stores bereitstellen.

Xamarin-Tools für Visual Studio 2017 installieren

Mit Visual Studio 2017 ist es sehr einfach, den Setup-Assistenten zu öffnen, die Xamarin-Tools auszuwählen (wie unten gezeigt) und einfach auf die Installation zu warten.

Es wird wahrscheinlich lange dauern, VS2017 mit Xamarin zu installieren – durch Hinzufügen von Xamarin zur Visual Studio-Basisinstallation wird es um etwa 25 GB größer.

Erstellen eines Projekts mit der standardmäßigen Xamarin-Vorlage

Dieser Teil ist einfach für jeden, der zuvor ein neues Projekt in Visual Studio 2017 erstellt hat.

Wählen Sie Datei -> Neues Projekt , um den Dialog unten zu öffnen, und wählen Sie einen Namen für das Projekt:

Nachdem Sie im obigen Dialogfeld auf OK geklickt haben (wobei ein plattformübergreifender App-Projekttyp ausgewählt wird), wird das Dialogfeld geschlossen und ein neues Projekt geöffnet. Ich habe mich für die Verwendung von Xamarin.Forms entschieden (mit dem Entwickler plattformübergreifende Benutzeroberflächen erstellen können). Ich habe mich auch dafür entschieden, ein freigegebenes Projekt zu erstellen, da ich nur erwarte, dass mein Code in meiner Anwendung verwendet und nicht als portable Klassenbibliothek mit anderen Entwicklern geteilt wird (weitere Informationen zu den Unterschieden zwischen freigegebenen Projekten und portablen Klassenbibliotheken finden Sie hier).

Wenn Sie auf „OK“ klicken, werden das Projekt und die Dateien erstellt, und ein Fenster wie das folgende mit Anweisungen zum Einrichten des Mac-Agenten wird angezeigt. (Ich habe keinen Mac und brauche sowieso Visual Studio Enterprise, um dies zu verwenden, also klicke ich normalerweise auf das Feld „Nicht mehr anzeigen“ in der unteren linken Ecke).

Schließlich werden Sie zur Eingabe der Windows-Versionen aufgefordert, auf die die UWP-Variante Ihres Projekts abzielen soll. Normalerweise klicke ich hier einfach auf OK.

An diesem Punkt verfügen Sie über eine einfache Xamarin-Lösung in Visual Studio 2017, die 4 Projekte enthält – eines für iOS, eines für Android, eines für UWP und ein freigegebenes Projekt.

Und nun zu den Gremlins ex machina

Nach diesem Punkt stieß ich auf ein paar Haken. Dinge, die ich tun wollte, die für mich nicht sofort funktionierten, waren:

  • Kompilieren Sie die Anwendung ohne Fehler oder Warnungen
  • Führen Sie die Anwendung in einem Windows Phone-Emulator aus
  • Führen Sie die Anwendung in einem Android-Emulator aus

Ich werde einige der Symptome von Problemen durchgehen, auf die ich beim Versuch der oben genannten Dinge gestoßen bin, und wie ich sie behoben habe.

Das Kompilieren der Lösung führte zu mehreren Warnungen und Fehlern

Leider zeigte mein Versuch, das Projekt out of the box zu kompilieren, einen Fehler im UWP-Projekt und eine Reihe von Warnmeldungen für das Android-Projekt.

Beseitigung des Fehlers CS0103 –  „InitializeComponent“ existiert im aktuellen Kontext nicht

Die Fehlermeldungen „Der Name ‚InitializeComponent‘ existiert im aktuellen Kontext nicht .“

Irgendwann sind mir ein paar Dinge aufgefallen, die ein bisschen bizarr erschienen:

  • Obwohl ich einen Fehler habe, meldet die Meldung in der Statusleiste unten links „Alles neu erstellen erfolgreich“ – beides kann doch nicht stimmen?
  • Dieser Fehler bezieht sich auf die Datei App.xaml.cs, die im Editorbereich geöffnet ist. Als ich Main.xaml.cs aus dem freigegebenen Projekt im VS2017-Editor geöffnet habe, sehe ich jetzt zwei Fehler (wie im Bild unten gezeigt).

Diese Fehler scheinen sich also nicht negativ auf den Build auszuwirken, und wenn ich sie wirklich loswerden möchte, kann ich diese Dateien einfach schließen, wodurch die Fehler beseitigt werden (wie unten gezeigt).

Warnungen über $(TargetFrameworkVersion)-Nichtübereinstimmungen entfernen

Drei der Warnungen, die ich sah, waren sehr ähnlich:

The $(TargetFrameworkVersion) for Xamarin.Forms.Platform.dll (v7.1) is 
greater than the $(TargetFrameworkVersion) for your project (v6.0). 
You need to increase the $(TargetFrameworkVersion) for your project.

The $(TargetFrameworkVersion) for Xamarin.Forms.Platform.Android.dll (v7.1) 
is greater than the $(TargetFrameworkVersion) for your project (v6.0). 
You need to increase the $(TargetFrameworkVersion) for your project.

The $(TargetFrameworkVersion) for FormsViewGroup.dll (v7.1) is greater 
than the $(TargetFrameworkVersion) for your project (v6.0). 
You need to increase the $(TargetFrameworkVersion) for your project.

Die Warnung besagt, dass ich die TargetFrameworkVersion für mein Android-Projekt erhöhen muss, aber wenn ich mir die Eigenschaften für dieses Projekt ansehe, kann ich es tatsächlich nicht über Version 6 (MarshMallow) hinaus erhöhen.

Glücklicherweise befinden wir uns hier nicht in einer Sackgasse – wir können zum Startmenü gehen und nach dem „SDK Manager“ für Android suchen, der mit der Xamarin-Komponente von Visual Studio 2017 installiert wird (siehe unten).

Wenn ich den Android SDK Manager starte, analysiert er die derzeit installierten Pakete und gibt an, was aktualisiert werden muss. Auf meinem System mussten 10 Pakete installiert oder aktualisiert werden, wie unten gezeigt.

Wenn ich auf die Schaltfläche „10 Pakete installieren…“ klicke, erscheint ein weiteres Fenster, in dem ich aufgefordert werde, die Lizenz zu akzeptieren. Ich habe die Lizenz akzeptiert und auf „Installieren“ geklickt.

Der Installations- und Aktualisierungsvorgang beginnt – dies kann einige Minuten dauern.

Kehren wir nach Abschluss der Installation zu Visual Studio 2017 zurück –  Ich habe es neu gestartet und dann die Lösung bereinigt und neu erstellt. Dieses Mal sind die Warnungen zu $(TargetFrameworkVersion)-Nichtübereinstimmungen verschwunden.

Beseitigung der Warnung IDE0006 – „Fehler beim Laden des Projekts“

Ich habe manchmal festgestellt, dass ich eine Warnung IDE0006 hatte, die darauf hinwies, dass „Fehler beim Laden des Projekts aufgetreten ist. Einige Projektfunktionen, wie die vollständige Lösungsanalyse für das fehlgeschlagene Projekt und davon abhängige Projekte, wurden deaktiviert “.

Dies geschah normalerweise kurz nachdem ich ein Projekt erstellt hatte, und ich stellte fest, dass die Warnung verschwindet, wenn ich VS2017 schließe, es neu starte und die Projektmappe erneut öffne und neu aufbaue.

Also zusammenfassend, um das Standardprojekt ohne Fehler oder Warnungen zu kompilieren:

  • Führen Sie den Android SDK-Manager als Administrator aus und installieren/aktualisieren Sie die empfohlenen Pakete.
  • Starten Sie Visual Studio 2017 neu und öffnen Sie das Projekt erneut.
  • Schließen Sie alle Dateien aus dem freigegebenen Projekt, die den Typ *.xaml.cs haben.

Ausführen in Ihrer Anwendung im Windows Phone-Emulator

Ich fand das einfach, sobald ich einen Windows Phone-Emulator installiert hatte.

Ich habe das Startprojekt in das UWP-Projekt und das Debugging-Ziel in einen der Windows Phone Mobile-Emulatoren geändert.

Nachdem ich auf Play (oder F5) gedrückt hatte, um die Windows UWP-Anwendung in einem Windows Phone-Emulator auszuführen, wurde ich aufgefordert, meinen Computer in den Entwicklermodus zu versetzen, damit ich Apps laden konnte – ich musste nur die dritte Option auswählen („Entwicklermodus“) ), wie in der Abbildung unten gezeigt (Sie können auf diesen Bildschirm über Start -> Einstellungen -> Für Entwickler zugreifen ).

Aber nachdem ich diese Einstellung geändert hatte, funktionierte alles gut – keine Gremlins hier. Der Telefonemulator startet nach ein paar Minuten, und ich konnte die Xamarin-Anwendung problemlos in der Liste der auf dem Telefonemulator installierten Apps sehen.

Und wenn ich die Xamarin-App im Emulator ausführe, sehe ich das richtige Ergebnis – ein einfaches Formular mit der Meldung „Willkommen bei Xamarin Forms!“

Ausführen Ihrer Anwendung im Android-Emulator

Visual Studio 2017 wird mit mehreren Android-Emulatoren geliefert – Sie können sie sehen, wenn Sie das Zielprojekt in das Android-Projekt ändern und sich die Dropdown-Liste auf der rechten Seite ansehen.

Verwenden Sie den Android x86-Emulator – aber Sie müssen Hyper-V deaktivieren

Sie müssen Hyper-V nicht deinstallieren, um den Android x86-Emulator unter Windows 10 auszuführen – Sie müssen ihn nur deaktivieren. Der Befehl dazu ist sehr einfach von einer Eingabeaufforderung aus, die als Administrator ausgeführt wird:

bcdedit /set hypervisorlaunchtype off

Starten Sie neu, damit diese Einstellungsänderung wirksam wird.

Meine Erfahrung war, dass ich mein Projekt nicht erfolgreich starten und in einem Android-Emulator von Visual Studio 2017 aus bereitstellen konnte. Ich konnte den Android-Emulator jedoch über den Android AVD Manager starten, der über das Startmenü verfügbar ist (wie unten gezeigt).

Wenn Sie dieses Programm starten, sehen Sie ein Dialogfeld wie das untenstehende, das die auf Ihrem Entwicklungscomputer verfügbaren virtuellen Android-Geräte auflistet.

Wählen Sie einen der x86-Emulatoren aus und klicken Sie auf die Schaltfläche „Start…“. Akzeptieren Sie die Standardoptionen auf dem Startbildschirm und ein Android-Telefonemulator wird gestartet.

Gehen Sie nun zurück zu Visual Studio 2017. Wählen Sie den Emulator, den Sie gerade gestartet haben, in der Dropdown-Liste rechts neben dem grünen „Play“-Pfeil aus. Klicken Sie nun mit der rechten Maustaste auf das Android-Projekt und wählen Sie „Lösung bereitstellen“.

Dies sollte nun die Xamarin-Anwendung für den Android-Emulator bereitstellen, wie unten gezeigt (unsere App befindet sich in der obersten Zeile, zweite Spalte):

Und wenn wir im Emulator auf das Xamarin-Anwendungssymbol klicken, sehen wir wie erwartet den gleichen Bildschirm wie im Windows Phone-Emulator mit der Aufschrift „Willkommen bei Xamarin Forms!“

Abschluss

Dies war nur ein kurzer Beitrag, um anderen Xamarin-Entwicklern zu helfen, die anfangen, einige der Kopfschmerzen zu vermeiden, die ich hatte. Und um es ganz klar zu sagen, ich kritisiere nicht Xamarin oder Visual Studio – Code auf drei verschiedenen Plattformen zum Laufen zu bringen, die sich ständig ändern und aktualisieren, ist ziemlich wunderbar, und letztendlich waren die Dinge, die ich tun musste, keine so große Sache ändern.

Es gibt bereits einige Anleitungen zur Fehlerbehebung von Microsoft auf Xamarin wie diese. Die folgenden Tipps sind Dinge, die ich nirgendwo anders gefunden habe.

  • Manchmal werden Fehler (z. B. CS0103) von VS2017 für Dateien falsch gemeldet, die im Editor geöffnet sind, insbesondere *.xaml.cs-Dateien aus dem freigegebenen Projekt – versuchen Sie, diese Dateien zu schließen und neu zu erstellen, um zu sehen, ob die Fehler behoben sind weg.
  • Andere Warnungen werden angezeigt, nachdem das Projekt zum ersten Mal erstellt wurde (z. B. IDE0006), aber wenn Sie VS2017 neu starten und das Projekt neu erstellen, verschwindet die Warnung.
  • Das Öffnen des Android SDK-Managers als Administrator und das Aktualisieren der Bibliotheken, die Sie auf Ihrem Entwicklungscomputer haben, kann helfen, Warnungen bezüglich TargetFrameworkVersion-Nichtübereinstimmungen zu entfernen – denken Sie daran, VS2017 nach dem Update neu zu starten und dann Ihre Lösung über VS2017 zu bereinigen und neu zu erstellen.
  • li>
  • Verwenden Sie die Android ARM-Emulatoren nicht unter Windows 10 – starten Sie stattdessen einen x86-Emulator aus dem Android AVD-Manager und stellen Sie ihn von VS2017 auf dem laufenden Emulator bereit.
  • Wenn der x86-Emulator nicht startet, müssen Sie Hyper-V möglicherweise mit dem Befehl „bcdedit /set hypervisorlaunchtype off deaktivieren „.

Über mich: Ich poste regelmäßig über .NET – wenn Sie interessiert sind, folgen Sie mir bitte auf Twitter oder sehen Sie sich hier meine früheren Beiträge an. Danke!


No