Codefreigabe für freigegebene Projekte

Mit freigegebenen Projekten können Sie allgemeinen Code schreiben, auf den von einer Reihe verschiedener Anwendungsprojekte verwiesen wird. Der Code wird als Teil jedes verweisenden Projekts kompiliert und kann Compilerdirektiven beinhalten, um plattformspezifische Funktionen in die freigegebene Codebasis zu integrieren.

Mit freigegebenen Projekten (manchmal auch als Shared Asset Projects bezeichnet) können Sie Code schreiben, der zwischen mehreren Zielprojekten, einschließlich Xamarin-Anwendungen, gemeinsam genutzt wird.

Sie unterstützen Compilerdirektiven, sodass Sie plattformspezifischen Code, der kompiliert werden soll, bedingt in eine Teilmenge der Projekte einschließen können, die auf das freigegebene Projekt verweisen. Es gibt auch IDE-Unterstützung, um die Compilerdirektiven zu verwalten und zu visualisieren, wie der Code in jeder Anwendung aussieht.

Wenn Sie in der Vergangenheit Dateiverknüpfungen verwendet haben, um Code zwischen Projekten freizugeben, funktioniert freigegebene Projekte auf ähnliche Weise, aber mit deutlich verbesserter IDE-Unterstützung.

Was ist ein freigegebenes Projekt?

Im Gegensatz zu den meisten anderen Projekttypen verfügt ein freigegebenes Projekt über keine Ausgabe (in DLL-Form), stattdessen wird der Code in jedes Projekt kompiliert, das darauf verweist. Dies wird im folgenden Diagramm veranschaulicht: Konzeptionell wird der gesamte Inhalt des freigegebenen Projekts in jedes verweisende Projekt "kopiert" und kompiliert, als ob es ein Teil davon wäre.

Architektur des freigegebenen Projekts

Der Code in einem freigegebenen Projekt kann Compilerdirektiven enthalten, die Codeabschnitte aktivieren oder deaktivieren, je nachdem, welches Anwendungsprojekt den Code verwendet. Dies wird durch die farbigen Plattformfelder im Diagramm vorgeschlagen.

Ein freigegebenes Projekt wird nicht selbst kompiliert, es besteht lediglich als Gruppierung von Quellcodedateien, die in andere Projekte eingeschlossen werden können. Wenn auf ein anderes Projekt verwiesen wird, wird der Code effektiv als Teil dieses Projekts kompiliert. Freigegebene Projekte können nicht auf einen anderen Projekttyp (einschließlich anderer freigegebener Projekte) verweisen.

Beachten Sie, dass Android-Anwendungsprojekte nicht auf andere Android-Anwendungsprojekte verweisen können. Beispielsweise kann ein Android-Komponententestprojekt nicht auf ein Android-Anwendungsprojekt verweisen. Weitere Informationen zu freigegebenen Projekten.

Exemplarische Vorgehensweise für Visual Studio für Mac

In diesem Abschnitt wird beschrieben, wie Sie mithilfe von Visual Studio für Mac ein freigegebenes Projekt erstellen und verwenden. Ein vollständiges Beispiel finden Sie im Abschnitt beispiel für freigegebene Projekte .

Erstellen eines freigegebenen Projekts

Um ein neues freigegebenes Projekt zu erstellen, navigieren Sie zu Datei > Neue Projektmappe... (oder klicken Sie mit der rechten Maustaste auf eine vorhandene Projektmappe, und wählen Sie Add > New Project...) aus:

Neues freigegebenes Projekt

Wählen Sie auf dem nächsten Bildschirm den Projektnamen aus, und klicken Sie auf Erstellen.

Unten wird ein neues freigegebenes Projekt angezeigt. Beachten Sie, dass keine Verweise oder Komponentenknoten vorhanden sind. diese werden für freigegebene Projekte nicht unterstützt.

Leeres freigegebenes Projekt

Damit ein freigegebenes Projekt nützlich ist, muss mindestens ein buildfähiges Projekt darauf verweisen (z. B. eine iOS- oder Android-Anwendung oder -Bibliothek oder ein PCL-Projekt). Ein freigegebenes Projekt wird nicht kompiliert, wenn nichts darauf verweist, sodass Syntaxfehler (oder andere) erst hervorgehoben werden, wenn etwas anderes darauf verweist.

Das Hinzufügen eines Verweises auf ein freigegebenes Projekt erfolgt auf die gleiche Weise wie das Verweisen auf ein reguläres Bibliotheksprojekt. Dieser Screenshot zeigt ein Xamarin.iOS-Projekt, das auf ein freigegebenes Projekt verweist.

Projektverweis auf freigegebenes Projekt

Sobald von einer anderen Bibliothek oder Anwendung auf das freigegebene Projekt verwiesen wird, können Sie die Projektmappe erstellen und alle Fehler im Code anzeigen. Wenn von zwei oder mehr anderen Projekten auf das freigegebene Projekt verwiesen wird, wird oben links im Quellcode-Editor ein Menü angezeigt, das anzeigt, welche Projekte auf diese Datei verweisen.

Optionen für freigegebene Projekte

Wenn Sie mit der rechten Maustaste auf ein freigegebenes Projekt klicken und Dort Optionen auswählen, sind weniger Einstellungen als andere Projekttypen vorhanden. Da freigegebene Projekte nicht (eigenständig) kompiliert werden, können Sie keine Ausgabe- oder Compileroptionen, Projektkonfigurationen, Assemblysignaturen oder benutzerdefinierte Befehle festlegen. Der Code in einem freigegebenen Projekt erbt diese Werte effektiv von dem, was darauf verweist.

Der Bildschirm Optionen wird unten angezeigt. Der Projektname und der Standardnamespace sind die einzigen beiden Einstellungen, die Sie im Allgemeinen ändern werden.

Optionen für freigegebene Projekte

Beispiel für ein freigegebenes Projekt

Im Tasky-Beispiel wird ein freigegebenes Projekt verwendet, um den gemeinsamen Code zu enthalten, der von iOS-, Android- und Windows Phone-Anwendungen verwendet wird. Sowohl die Quellcodedateien als TaskRepository.cs auch die SQLite.cs Quellcodedateien verwenden Compilerdirektiven (z. B. #if __ANDROID__), um unterschiedliche Ausgaben für jede der Anwendungen zu erzeugen, die darauf verweisen.

Die vollständige Projektmappenstruktur ist unten (in Visual Studio für Mac bzw. Visual Studio) dargestellt:

Das Windows Phone-Projekt kann von Visual Studio für Mac aus navigiert werden, obwohl dieser Projekttyp für die Kompilierung in Visual Studio für Mac nicht unterstützt wird.

Die ausgeführten Anwendungen werden unten gezeigt:

Beispiele für iOS, Android Windows Phone

Zusammenfassung

In diesem Dokument wurde beschrieben, wie freigegebene Projekte funktionieren, wie sie sowohl in Visual Studio für Mac als auch in Visual Studio erstellt und verwendet werden können, und es wurde eine einfache Beispielanwendung vorgestellt, die ein freigegebenes Projekt in Aktion veranschaulicht.