Zielframework für Xamarin.Mac

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

Zielframeworkoptionen für Xamarin.Mac

Hintergrund

Jedes .NET-Programm oder jede .NET-Bibliothek ist von der Funktionalität abhängig, die von der Basisklassenbibliothek (Base Class Library, BCL) bereitgestellt wird. Diese BCL umfasst Assemblys wie mscorlib, System, System.Net.Http und System.Xml, die die allgemeine Funktionalität bereitstellen, die in allen .NET-Sprachen integriert ist.

Im Laufe der Jahre wurden mehrere verschiedene Versionen dieser BCL entwickelt, die für unterschiedliche Anwendungsfälle optimiert sind. Die "Desktop"-BCL enthält einen umfangreicheren Satz von Bibliotheken, die für andere Anwendungsfälle möglicherweise zu schwer sein können, während sich Mobile darauf konzentriert, sicherzustellen, dass APIs sicher für die Verknüpfung sind, wodurch nicht verwendeter Code entfernt wird, um den Anwendungsbedarf zu verringern.

Eine der wichtigeren Auswirkungen dieser verschiedenen Zielframeworks ist, dass alle Assemblys in einem bestimmten Programm auf kompatible BCL-Assemblys abzielen müssen . Wenn dies nicht der Fall ist, könnten Sie zwei Assemblys mit verschiedenen Versionen des System.dll verknüpfen, die nicht über die Signatur eines bestimmten Typs übereinstimmen. Eine freigegebene Bibliothek kann entweder als Ziel für .NET Standard 2( die gemeinsame Teilmenge der Zielframeworks) oder ein bestimmtes Zielframework verwendet werden.

Für Xamarin.Mac stehen drei Target Framework-Optionen mit jeweils unterschiedlichen Vorteilen und Kompromissen zur Verfügung:

  • Modern (in älteren Dokumentationen als Mobile bezeichnet) – Eine sehr ähnliche Teilmenge wie Xamarin.iOS, die stark auf Leistung und Größe abgestimmt ist. Dieses Zielframework ist linkersicher, sodass diese Projekte ihren endgültigen Platzbedarf drastisch reduzieren können, indem nicht verwendeter Code entfernt wird.

  • Vollständig (in der älteren Dokumentation als XM 4.5 bezeichnet) – Eine sehr ähnliche Teilmenge wie die BCL "Desktop" mit einigen kleinen Entfernungen. Da das Zielframework fast mit net45 (und höher) identisch ist, kann es problemlos viele Nugets nutzen, die weder netstandard2 noch bestimmte Xamarin.Mac-Builds bereitstellen. Aufgrund der System.Configuration-Verwendung ist die Verknüpfung jedoch nicht kompatibel.

  • Nicht unterstützt (in einer älteren Dokumentation als System bezeichnet) – Verwenden Sie anstelle einer Verknüpfung mit einer von Xamarin.Mac bereitgestellten BCL das aktuelle systeminstallierte Mono. Dies stellt den vollständigsten Satz von Assemblys bereit, einschließlich einiger, die als problematisch bekannt sind (z. B. System.Drawing). Diese Option hat nur einen "letzten Ausweg" und es wird dringend empfohlen, andere Optionen auszuschöpfen, bevor Sie sie verwenden. Wie der Name schon sagt, wird die Nutzung von offiziellen Supportkanälen nicht unterstützt.

Festlegen des Zielframeworks

Gehen Sie wie folgt vor, um zum Zielframeworktyp für ein Xamarin.Mac-Projekt zu wechseln:

  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:

    Verwenden des Fensters Projektoptionen zum Auswählen eines Zielframeworks

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

Sie sollten Ihr Xamarin.Mac-Projekt bereinigen und neu erstellen , nachdem Sie den Zielframeworktyp gewechselt haben.

Zusammenfassung

In diesem Artikel wurden kurz die verschiedenen Typen von Zielframeworks (Basisklassenbibliotheken) behandelt, die für eine Xamarin.Mac-Anwendung verfügbar sind, und wann die einzelnen Frameworktypen verwendet werden sollen.