Zielframework für Xamarin.Mac

In diesem Artikel werden die Zielframeworks (Basisklassenbibliotheken) behandelt, die für Xamarin.Mac verfügbar sind, und die Auswirkungen der Verwendung in Ihrem Xamarin.Mac-Projekt.

Target framework options for Xamarin.Mac

Hintergrund

Jedes .NET-Programm oder jede Bibliothek hängt von der Funktionalität der Basisklassenbibliothek (BCL) ab. Diese BCL enthält Assemblys wie Mscorlib, System, System, System.Net.Http und System.Xml, die die in allen .NET-Sprachen integrierte allgemeine Funktionalität bereitstellen.

In den Jahren haben sich mehrere verschiedene Versionen dieses BCL entwickelt, die für unterschiedliche Anwendungsfälle optimiert sind. Die BCL "Desktop" enthält einen umfangreicheren Satz von Bibliotheken, die möglicherweise zu schwer für andere Anwendungsfälle sind, während Mobile darauf konzentriert, apIs sicher zu verknüpfen, wodurch nicht verwendeter Code entfernt wird, um den Anwendungsbedarf zu verringern.

Eine der wichtigeren Auswirkungen dieser verschiedenen Zielframeworks besteht darin, dass alle Assemblys in einem bestimmten Programm auf kompatible BCL-Assemblys abzielen müssen . Wenn dies nicht der Fall war, könnten Sie zwei Assemblys mit unterschiedlichen Versionen der System.dll nicht über die Signatur eines bestimmten Typs verknüpft haben. Eine freigegebene Bibliothek kann entweder auf .NET Standard 2 abzielen, was die allgemeine Teilmenge der Target Frameworks oder ein bestimmtes Zielframework ist.

Es gibt drei Zielframework-Optionen für Xamarin.Mac, jeweils mit unterschiedlichen Vorteilen und Tradeoffs:

  • Modern (genannt Mobile in älteren Dokumentationen) – Eine sehr ähnliche Teilmenge wie Xamarin.iOS, hoch abgestimmt auf Leistung und Größe. Dieses Zielframework ist sicher, sodass diese Projekte ihren endgültigen Fußabdruck erheblich reduzieren können, indem nicht verwendeter Code entfernt wird.

  • Voll (genannt XM 4.5 in älteren Dokumentationen) – Eine sehr ähnliche Teilmenge der BCL "Desktop" mit einigen kleinen Entfernungen. Da das Target Framework fast identisch mit net45 (und höher) ist, kann es leicht viele Nugets nutzen, die keine Netstandard2- oder bestimmte Xamarin.Mac-Builds bereitstellen. Aufgrund der System.Configuration-Verwendung ist die Verknüpfung jedoch nicht kompatibel.

  • Nicht unterstützt (system in älteren Dokumentationen genannt) – Verwenden Sie anstelle einer Verknüpfung mit einer von Xamarin.Mac bereitgestellten BCL das aktuelle system installierte Mono. Dies bietet den vollständigsten Satz von Assemblys, einschließlich einiger bekanntes problematisches (z. B. System.Drawing). Diese Option besteht nur über ein "letztes Mittel", und es wird dringend empfohlen, andere Optionen auszuschöpfen, bevor sie verwendet werden. Wie der Name impliziert, wird die Verwendung von offiziellen Supportkanälen nicht unterstützt.

Festlegen des Zielframeworks

Gehen Sie wie folgt vor, um den Zielframeworktyp für ein Xamarin.Mac-Projekt zu ändern:

  1. Öffnen Sie das Xamarin.Mac-Projekt in Visual Studio für Mac.

  2. Doppelklicken Sie auf die Projektdatei im Projektmappen-Explorer, um die Projektoptionen zu öffnen.

  3. Wählen Sie auf der Registerkarte "Allgemein " den Typ des Zielframeworks aus, der den Anforderungen Ihrer Anwendung entspricht:

    Using the Project Options window to choose a target framework

  4. Klicken Sie auf OK, um die Änderungen zu speichern.

Sie sollten Ihr Xamarin.Mac-Projekt nach dem Wechseln des Target Framework-Typs bereinigen und dann neu erstellen .

Zusammenfassung

Dieser Artikel hat kurz die verschiedenen Typen von Target Frameworks (Base Class Libraries) behandelt, die für eine Xamarin.Mac-Anwendung verfügbar sind und wann jeder Framework-Typ verwendet werden soll.