Xamarin.Mac-LinkeroptionenXamarin.Mac linker options

Verknüpfen ist ein leistungsstarkes Optimierungstool, das die Größe Ihrer Anwendung verringert, indem nicht verwendeter Code entfernt wird.Linking is a powerful optimization tool that reduces the size of your application by removing unused code.

ÜbersichtOverview

Die verfügbaren Linkeroptionen können auf Grundlage des Zielframeworks, das Ihr Projekt verwendet, eingeschränkt sein.Based upon the Target Framework your project uses, the linker options available may be limited. Dies ist darauf zurückzuführen, dass für die Verknüpfung die Erstellung eines Objektgraphs von jedem von Ihrer Anwendung verwendeten Typ erforderlich ist. Für „Full“ (vollständig) (oder „Unsupported“ – Nicht unterstützt) ist dies aufgrund von „System.Configuration“ nicht möglich.This is due to the fact that linking requires the creation of an object graph of every type used by your application and this is not possible in Full (or Unsupported) due to System.Configuration.

Es gibt vier Möglichkeiten:There are four options available:

  • Keine – Deaktiviert alle Verknüpfungen.None – Disable all linking. Standard bei der Debugkonfiguration in Modern und allen Konfiguration in Full (vollständig)Default in Debug configuration in Modern and all configurations in Full.
  • SDK: Verknüpft alle SDK-Assemblys (Benutzerassemblys ausgenommen).SDK – Links all SDK assembly, excluding user assemblies. Standard in der Releasekonfiguration in Modern.Default in Release configuration in Modern. Für „Full“ (vollständig) nicht verfügbar.Unavailable on Full.
  • Full (vollständig): Verknüpfen aller Assemblys.Full – Link all assemblies. Dies erfordert, dass Benutzercode für den Linker sicher ist. Weitere Informationen finden Sie in den Anmerkungen.This requires user code to be linker safe, see the notes for more information. Für „Full“ (vollständig) nicht verfügbar.Unavailable on Full.
  • Plattform: Verknüpft nur „Xamarin.Mac.dll“.Platform – Link just Xamarin.Mac.dll. Details finden Sie weiter unten.See below for details.

PlattformverknüpfungPlatform linking

Das Verknüpfen von Anwendungen mithilfe des Zielframeworks „Full“ ist in der Regel nicht sicher. In einigen Fällen ist jedoch eine eingeschränkte Form des Verknüpfens erforderlich.Linking applications using the Full Target Framework is generally unsafe, but there are a number of scenarios where a very limited form of linking is required.

Anwendungen, die z.B. an den macOS App Store übermittelt werden, dürfen auf keine verwalteten APIs (wie etwa QTKit) verweisen, von denen Xamarin.Mac Bindungen enthält.For example, Applications submitted to the macOS App Store must not reference a number of deprecated APIs (such as QTKit), some of which Xamarin.Mac contains bindings of. Auch wenn eine Anwendung diese Bindungen nicht aufruft, ist der Aufruf jedoch im SDK vorhanden und wird abgelehnt.Even if an applications does not call those bindings, the invocation will exist in the SDK and be rejected.

Die Plattformverknüpfung geht davon aus, dass die Anwendung und BCL nicht sicher für den Linker sind und entfernt nicht verwendeten Code aus „Xamarin.Mac.dll“.Platform linking assumes the application and the BCL are linker unsafe and just remove unused code from Xamarin.Mac.dll.

Alle Anwendungen, die sich nicht auf Xamarin.Mac.dll-Typen beziehen, erfahren eine geringe Leistungsverbesserung beim Start durch die Entfernung unnötiger Typen.Any applications not reflecting on Xamarin.Mac.dll types will see a minor startup improvement from the removal of unnecessary types.

Die Plattformverknüpfung eignet sich in der Regel nur für Anwendung, die das Full-Zielframework verwenden, da die Modern-Anwendung die leistungsstärkere SDK-Option verwenden kann.Platform linking is generally only useful for applications using the Full target framework, as Modern application can use the more powerful SDK option.

Festlegen der LinkerkonfigurationSetting the linker configuration

Um zur Linkerkonfiguration für ein Xamarin.Mac-Projekt zu wechseln, führen Sie folgende Schritte aus:To change to the linker configuration for a Xamarin.Mac project, do the following:

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

  2. Doppelklicken Sie auf die Projektdatei im Projektmappen-Explorer, um die Projektoptionen zu öffnen.In the Solution Explorer, double-click the project file to open the Project Options dialog box.

  3. Wählen Sie auf der Registerkarte Mac-Build den Typ des Linkerverhaltens, der am besten zu Ihrer Anwendung passt:From the Mac Build tab, select the type of Linker Behavior that suits your application's needs:

    Auswählen, welches Linkerverhalten verwendet werden sollChoose which linker behavior to use

  4. Die Plattformverknüpfung für Full-Zielframeworks wird erst in einem späteren Update zur IDE hinzugefügt.Platform linking for Full Target Frameworks will not appear in the IDE until a future update. Fügen Sie bis dahin stattdessen den zusätzlichen mmp-Argumenten--linkplatform hinzu.Until then, add --linkplatform to the Additional mmp arguments instead.

  5. Klicken Sie auf OK, um die Änderungen zu speichern.Click the OK button to save your changes.