Kürzen eigenständiger Bereitstellungen und ausführbarer Dateien

Das frameworkabhängige Bereitstellungsmodell ist seit der Einführung von .NET das erfolgreichste Bereitstellungsmodell. In diesem Szenario bündelt der Anwendungsentwickler nur die Anwendung und Drittanbieterassemblys mit der Annahme, dass die .NET-Runtime und Runtimebibliotheken auf dem Clientcomputer verfügbar sind. Dieses Bereitstellungsmodell ist in .NET auch weiterhin das wichtigste, allerdings gibt es einige Szenarien, in denen das frameworkabhängige Modell nicht die beste Wahl ist. Die Alternative besteht darin, eine eigenständige Anwendung zu veröffentlichen, bei der die .NET Runtime und Runtimebibliotheken zusammen mit der Anwendung und Assemblys von Drittanbietern gebündelt werden.

Das unabhängige Bereitstellungsmodell zum Kürzen ist eine spezialisierte Version des eigenständigen Bereitstellungsmodells, das für die Minimierung der Bereitstellungsgröße optimiert ist. Das Minimieren der Bereitstellungsgröße ist für einige clientseitige Szenarios wie Blazor-Anwendungen eine wichtige Anforderung. Abhängig von der Komplexität der Anwendung ist für deren Ausführung nur eine Teilmenge der Frameworkassemblys, auf die verwiesen wird, und eine Teilmenge des Codes innerhalb der einzelnen Assemblys erforderlich. Die nicht verwendeten Teile der Bibliotheken sind unnötig und können aus der gepackten Anwendung entfernt werden.

Es besteht jedoch das Risiko, dass die Buildzeitanalyse der Anwendung zur Laufzeit Fehler verursacht, da verschiedene problematische Codemuster nicht zuverlässig analysiert werden können (hauptsächlich in Zusammenhang mit Reflexion). Um diese Probleme zu minimieren, werden Warnungen erzeugt, wenn der Trimmer ein Codemuster nicht vollständig analysieren kann. Informationen dazu, was die Warnungen zu Kürzungen bedeuten und wie sie behoben werden, finden Sie unter Einführung in Kürzungswarnungen.

Hinweis

  • Kürzen wird in .NET 6 und höheren Versionen vollständig unterstützt. In .NET 3.1 und .NET 5 war Kürzen ein experimentelles Feature.
  • Kürzen ist nur für Anwendungen verfügbar, die eigenständig veröffentlicht werden.

Komponenten, die Kürzungsprobleme verursachen

Warnung

Nicht alle Projekttypen können gekürzt werden. Weitere Informationen finden Sie unter Bekannte Kürzungsinkompatibilitäten.

Code, der Probleme bei der Analyse zur Buildzeit verursacht, eignet sich nicht zum Kürzen. Einige häufige Programmiermuster, die bei Verwendung durch eine Anwendung problematisch sind, haben ihren Ursprung in der Nutzung unbegrenzter Reflexion und sowie in externen Abhängigkeiten, die zur Buildzeit nicht sichtbar sind. Ein Beispiel für unbegrenzte Reflexion ist ein Legacyserialisierer wie die XML-Serialisierung. Ein Beispiel für unsichtbare externe Abhängigkeiten ist integriertes COM. Informationen zum Beheben von Warnungen zur Kürzungen in Ihrer Anwendung finden Sie unter Einführung in Kürzungswarnungen. Informationen dazu, wie Sie Ihre Bibliothek mit Kürzungen kompatibel machen, finden Sie unter Vorbereiten von .NET-Bibliotheken für Kürzungen.

Aktivieren der Kürzung

  1. Fügen Sie <PublishTrimmed>true</PublishTrimmed> zu Ihrer Projektdatei hinzu.

    Diese Eigenschaft erzeugt eine gekürzte App bei der eigenständigen Veröffentlichung. Außerdem werden Features deaktiviert, die nicht für die Kürzung geeignet sind, und während der Erstellung werden Warnungen bezüglich der Kompatibilität von Kürzungen angezeigt.

    <PropertyGroup>
        <PublishTrimmed>true</PublishTrimmed>
    </PropertyGroup>
    
  2. Veröffentlichen Sie Ihre App dann entweder mit dem Befehl dotnet publish oder über Visual Studio.

Veröffentlichen mit der CLI

Das folgende Beispiel veröffentlicht die App für Windows als gekürzte eigenständige Anwendung.

dotnet publish -r win-x64

Das Kürzen wird nur für eigenständige Apps unterstützt.

<PublishTrimmed> sollte in der Projektdatei festgelegt werden, damit mit dem Kürzen inkompatible Features während dotnet build deaktiviert werden. Sie können diese Option jedoch auch als Argument von dotnet publish festlegen:

dotnet publish -r win-x64 -p:PublishTrimmed=true

Weitere Informationen finden Sie unter Veröffentlichen von .NET-Apps mit der .NET-CLI.

Veröffentlichen mit Visual Studio

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt, das Sie veröffentlichen möchten, und wählen Sie Veröffentlichen aus.

    Solution Explorer with a right-click menu highlighting the Publish option.

    Wenn Sie noch nicht über ein Veröffentlichungsprofil verfügen, befolgen Sie die Anweisungen zum Erstellen eines solchen Profils, und wählen Sie als Zieltyp Ordner aus.

  2. Wählen Sie Weitere Aktionen>Bearbeiten aus.

    Visual studio publish profile with edit button.

  3. Legen Sie im Dialogfeld Profileinstellungen die folgenden Optionen fest:

    • Legen Sie den Bereitstellungsmodus auf Eigenständig fest.
    • Legen Sie die Zielrumtime auf die Plattform fest, auf der Sie die App veröffentlichen möchten.
    • Wählen Sie Nicht verwendeten Code kürzen aus.

    Klicken Sie auf Speichern, um die Einstellungen zu speichern und zum Dialogfeld Veröffentlichen zurückzukehren.

    Profile settings dialog with deployment mode, target runtime, and trim unused assemblies options highlighted.

  4. Klicken Sie auf Veröffentlichen, um Ihre App zugeschnitten zu veröffentlichen.

Weitere Informationen finden Sie unter Veröffentlichen von .NET Core-Apps mit Visual Studio.

Veröffentlichen mit Visual Studio für Mac

Visual Studio für Mac bietet keine Optionen zum Veröffentlichen Ihrer App. Sie müssen diese manuell veröffentlichen, indem Sie die Anleitung im Abschnitt Veröffentlichen mit der CLI befolgen. Weitere Informationen finden Sie unter Veröffentlichen von .NET-Apps mit der .NET-CLI.

Siehe auch