Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die in diesem Artikel beschriebenen MSBuild-Eigenschaften und -Elemente beeinflussen das Verhalten von gekürzten, eigenständigen Bereitstellungen. Im Zusammenhang mit einigen Optionen wird ILLink
erwähnt. Dies ist der Name des zugrunde liegenden Tools, das die Kürzung implementiert. Weitere Informationen zum zugrunde liegenden Tool finden Sie in der Trimmer-Dokumentation.
Das Kürzen mit PublishTrimmed
wurde in .NET Core 3.0 eingeführt. Die anderen Optionen sind in .NET 5 und höheren Versionen verfügbar.
Aktivieren der Kürzung
<PublishTrimmed>true</PublishTrimmed>
Aktivieren Sie die Kürzung während der Veröffentlichung. Diese Einstellung deaktiviert auch nicht kompatible Trim-Features und ermöglicht die Kürzungsanalyse während des Builds. In .NET 8 und höher-Apps ermöglicht diese Einstellung auch die Konfigurationsbindung und die Anforderung von Stellvertretungsquellengeneratoren.
Hinweis
Wenn Sie den Kürzungsvorgang als aktiviert in der Befehlszeile angeben, unterscheidet sich die Debugerfahrung, und es treten möglicherweise zusätzliche Fehler im Endprodukt auf.
Legen Sie diese Einstellung in der Projektdatei fest, um sicherzustellen, dass sie auch während dotnet build
und nicht nur bei dotnet publish
angewendet wird.
Diese Einstellung aktiviert auch das Roslyn-Analysetool für Kürzungskompatibilität und deaktiviert Features, die nicht für die Kürzung geeignet sind.
Roslyn-Analysetool
Wenn Sie PublishTrimmed
in .NET 6 und höher festlegen, wird auch ein Roslyn-Analysetool aktiviert, das begrenzte Analysewarnungen anzeigt. Sie können das Analysetool auch unabhängig von PublishTrimmed
aktivieren oder deaktivieren.
<EnableTrimAnalyzer>true</EnableTrimAnalyzer>
Aktivieren Sie ein Roslyn-Analysetool für eine Teilmenge der Kürzungsanalysewarnungen.
Unterdrücken von Warnungen
Sie können einzelne Warnungscodes mithilfe der üblichen MSBuild-Eigenschaften unterdrücken, die von der Toolkette berücksichtigt werden, darunter NoWarn
, WarningsAsErrors
, WarningsNotAsErrors
und TreatWarningsAsErrors
. Es gibt eine zusätzliche Option, die das ILLink-Warn-as-Error-Verhalten unabhängig voneinander steuert:
<ILLinkTreatWarningsAsErrors>false</ILLinkTreatWarningsAsErrors>
Behandeln Sie ILLink-Warnungen nicht als Fehler. Dies kann hilfreich sein, um zu vermeiden, dass Warnungen zur Kürzung von Analysen in Fehler umgewandelt werden, wenn Compilerwarnungen global als Fehler behandelt werden.
Anzeigen ausführlicher Warnungen
In .NET 6 und höher wird bei der Kürzungsanalyse für jede Assembly, die aus einer PackageReference
stammt, höchstens eine Warnung erzeugt, die angibt, dass die internen Daten der Assembly aus Kompatibilitätsgründen nicht gekürzt werden können. Sie können auch einzelne Warnungen für alle Assemblys anzeigen:
<TrimmerSingleWarn>false</TrimmerSingleWarn>
Zeigen Sie alle detaillierten Warnungen an, anstatt sie auf eine einzelne Warnung pro Assembly zu reduzieren.
Entfernen von Symbolen
Symbole werden in der Regel gekürzt, damit sie mit den gekürzten Assemblys übereinstimmen. Sie können auch alle Symbole entfernen:
<TrimmerRemoveSymbols>true</TrimmerRemoveSymbols>
Entfernen Sie Symbole aus der gekürzten Anwendung einschließlich eingebetteter und separater PDB-Dateien. Dies gilt sowohl für den Anwendungscode als auch für alle Abhängigkeiten mit Symbolen.
Das SDK ermöglicht außerdem die Deaktivierung der Debuggerunterstützung mithilfe der Eigenschaft DebuggerSupport
. Wenn die Debuggerunterstützung deaktiviert ist, entfernt das Kürzen automatisch Symbole (TrimmerRemoveSymbols
wird standardmäßig auf "true" festgelegt).
Kürzen von Frameworkbibliotheksfeatures
Mehrere Featurebereiche der Frameworkbibliotheken enthalten Trimmeranweisungen, die es ermöglichen, den Code für deaktivierte Features zu entfernen.
MSBuild-Eigenschaft | Beschreibung |
---|---|
AutoreleasePoolSupport |
Bei Festlegung auf false , entfernt Code, der Autorelease-Pools auf unterstützten Plattformen erstellt.
false ist die Standardeinstellung für das .NET SDK. |
DebuggerSupport |
Wenn diese Einstellung auf false " festgelegt ist , entfernt Code, der eine bessere Debugerfahrung ermöglicht. Durch diese Einstellung werden Symbole auch entfernt. |
EnableUnsafeBinaryFormatterSerialization |
Wenn diese Option auf false "BinaryFormatter" festgelegt ist, wird die Serialisierungsunterstützung für BinaryFormatter entfernt. Weitere Informationen finden Sie unter BinaryFormatter serialization methods are obsolete and In-box BinaryFormatter implementation removed and always throws. |
EnableUnsafeUTF7Encoding |
Bei Festlegung auf false , entfernt unsicheren UTF-7-Codierungscode. Weitere Informationen finden Sie unter UTF-7-Codepfade sind veraltet. |
EventSourceSupport |
Bei Festlegung auf false , entfernt EventSource-bezogenen Code und Logik. |
Http3Support (.NET 10+) |
Bei Festlegung auf false , entfernt Code im Zusammenhang mit der Unterstützung für HTTP/3 in System.Net.Http. |
HttpActivityPropagationSupport |
Bei Festlegung auf false , entfernt Code im Zusammenhang mit der Diagnoseunterstützung für System.Net.Http. |
InvariantGlobalization |
Bei Festlegung auf true , werden globalisierungsspezifischer Code und Daten entfernt. Weitere Informationen finden Sie unter Invarianter Modus. |
MetadataUpdaterSupport |
Bei Festlegung auf false , entfernt Metadatenaktualisierungs-spezifische Logik im Zusammenhang mit dem hot reload. |
MetricsSupport |
Wenn diese Einstellung auf false " festgelegt ist , wird die Unterstützung für System.Diagnostics.Metrics die Instrumentierung entfernt. |
StackTraceSupport (.NET 8+) |
Bei Festlegung auf false , entfernt die Unterstützung für das Generieren von Stapelablaufverfolgungen (z. B Environment.StackTrace . oder Exception.ToString) durch die Laufzeit. Die Menge der Informationen, die aus Stapelablaufverfolgungszeichenfolgen entfernt werden, hängt möglicherweise von anderen Bereitstellungsoptionen ab. Diese Option wirkt sich nicht auf Stapelablaufverfolgungen aus, die von Debuggern generiert werden. |
UseNativeHttpHandler |
Bei Festlegung auf true , verwendet die Standardplattformimplementierung für HttpMessageHandler Android und iOS und entfernt die verwaltete Implementierung. |
UseSizeOptimizedLinq (.NET 10+) |
Bei Festlegung auf true , entfernt einige der Durchsatzoptimierungen in LINQ, die sich negativ auf die Größe der Anwendung auswirken.
true Standardmäßig mit PublishAot ; es ist möglicherweise nicht möglich, einige Anwendungen mit dieser Eigenschaft false nativ zu kompilieren. |
UseSystemResourceKeys |
Wenn diese Einstellung auf true " festgelegt ist , werden Ausnahmemeldungen für System.* Assemblys entfernt. Wenn eine Ausnahme aus einer System.* Assembly ausgelöst wird, ist die Nachricht eine vereinfachte Ressourcen-ID anstelle der vollständigen Nachricht. |
XmlResolverIsNetworkingEnabledByDefault (.NET 8+) |
Wenn diese Einstellung festgelegt false ist, wird die Unterstützung für das Auflösen von NICHT-Datei-URLs in System.Xmlentfernt. Es wird nur die Auflösung des Dateisystems unterstützt. |
Diese Eigenschaften bewirken, dass der zugehörige Code gekürzt wird. Außerdem werden Features über die Datei runtimeconfig deaktiviert. Weitere Informationen zu diesen Eigenschaften einschließlich der entsprechenden runtimeconfig-Optionen finden Sie unter Featureoptionen. Einige SDKs weisen möglicherweise Standardwerte für diese Eigenschaften auf.
Bei der Kürzung deaktivierte Frameworkfeatures
Die folgenden Features sind mit dem Kürzen nicht kompatibel, da code erforderlich ist, auf den nicht statisch verwiesen wird. Diese Features sind in gekürzten Apps standardmäßig deaktiviert.
Warnung
Aktivieren Sie diese Features auf eigene Gefahr. Es ist wahrscheinlich, dass dadurch gekürzte Apps ohne zusätzlichen Aufwand zur Beibehaltung des dynamisch referenzierten Codes unterbrochen werden.
<BuiltInComInteropSupport>
Die integrierte COM-Unterstützung ist deaktiviert.
<CustomResourceTypesSupport>
Die Verwendung von benutzerdefinierten Ressourcentypen wird nicht unterstützt. Ressourcenmanager-Codepfade, die Spiegelung für benutzerdefinierte Ressourcentypen verwenden, werden gekürzt.
<EnableCppCLIHostActivation>
Die C++/CLI-Hostaktivierung ist deaktiviert.
<EnableUnsafeBinaryFormatterInDesigntimeLicenseContextSerialization>
Die Verwendung der DesigntimeLicenseContextSerializer-Serialisierung durch
BinaryFormatter
ist deaktiviert.<StartupHookSupport>
Das Ausführen von Code vor dem
Main
AusführenDOTNET_STARTUP_HOOKS
von Code wird nicht unterstützt. Weitere Informationen finden Sie unter Hoststarthook.