Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Vlastnosti a položky nástroje MSBuild popsané v tomto článku ovlivňují chování oříznutých, samostatných nasazení. Některé z možností zmínky ILLink, což je název základního nástroje, který implementuje oříznutí. Další informace o základním nástroji najdete v dokumentaci k trimmeru.
V .NET Core 3.0 jsme zavedli oříznutí PublishTrimmed . Ostatní možnosti jsou k dispozici v .NET 5 a novějších verzích.
Povolení oříznutí
<PublishTrimmed>true</PublishTrimmed>Povolte oříznutí během publikování. Toto nastavení také vypne nekompatibilní funkce oříznutí a povolí analýzu oříznutí během sestavování. V aplikacích .NET 8 a novějších umožňuje toto nastavení také generátory zdrojů pro konfiguraci a delegování požadavků.
Poznámka:
Pokud zadáte oříznutí tak, jak je povoleno z příkazového řádku, prostředí ladění se bude lišit a v konečném produktu se můžou vyskytnout další chyby.
Toto nastavení umístěte do souboru projektu, abyste zajistili, že se toto nastavení použije nejen během dotnet builddotnet publish.
Toto nastavení také umožňuje analyzátor Roslyn kompatibilní s oříznutím a zakáže funkce nekompatibilní s oříznutím.
Analyzátor Roslyn
Nastavení PublishTrimmed v .NET 6+ také umožňuje analyzátor Roslyn, který zobrazuje omezenou sadu upozornění analýzy. Analyzátor můžete také povolit nebo zakázat nezávisle na PublishTrimmed.
<EnableTrimAnalyzer>true</EnableTrimAnalyzer>Povolení analyzátoru Roslyn pro podmnožinu upozornění analýzy oříznutí
Potlačení upozornění
Můžete potlačit jednotlivé kódy upozornění pomocí obvyklých vlastností nástroje MSBuild respektovaných sadou nástrojů, včetně NoWarn, WarningsAsErrors, WarningsNotAsErrorsa TreatWarningsAsErrors. Existuje další možnost, která nezávisle řídí chování upozornění ILLink jako chyby:
<ILLinkTreatWarningsAsErrors>false</ILLinkTreatWarningsAsErrors>Nezacházejte s upozorněními ILLink jako s chybami. To může být užitečné, abyste se vyhnuli globálnímu zpracování upozornění analýzy oříznutí na chyby při zacházení s upozorněními kompilátoru jako s chybami.
Zobrazit podrobná upozornění
V rozhraní .NET 6+ vytvoří analýza oříznutí maximálně jedno upozornění pro každé sestavení, které pochází z PackageReference, označující, že vnitřní hodnoty sestavení nejsou kompatibilní s oříznutím. Můžete také zobrazit jednotlivá upozornění pro všechna sestavení:
<TrimmerSingleWarn>false</TrimmerSingleWarn>Zobrazí všechna podrobná upozornění místo jejich sbalení do jednoho upozornění na každé sestavení.
Odebrání symbolů
Symboly se obvykle oříznou tak, aby odpovídaly oříznutým sestavením. Můžete také odebrat všechny symboly:
<TrimmerRemoveSymbols>true</TrimmerRemoveSymbols>Odeberte symboly z oříznuté aplikace, včetně vložených souborů PDB a samostatných souborů PDB. To platí pro kód aplikace i všechny závislosti, které jsou součástí symbolů.
Sada SDK také umožňuje zakázat podporu ladicího programu pomocí vlastnosti DebuggerSupport. Pokud je podpora ladicího programu zakázaná, oříznutí automaticky odebere symboly (TrimmerRemoveSymbols výchozí hodnota je true).
Střih funkcí knihovny architektury
Několik oblastí funkcí knihoven architektury obsahuje direktivy trimmeru, které umožňují odebrat kód pro zakázané funkce.
| Vlastnost MSBuild | Popis |
|---|---|
AutoreleasePoolSupport |
Pokud je tato možnost nastavená, falseodebere kód, který vytvoří fondy automatického odstranění na podporovaných platformách.
false je výchozí pro sadu .NET SDK. |
DebuggerSupport |
Při nastavení odebere falsekód, který umožňuje lepší možnosti ladění. Toto nastavení také odebere symboly. |
EnableUnsafeBinaryFormatterSerialization |
Při nastavení na false, odebere BinaryFormatter serializace podpora. Další informace naleznete v tématu BinaryFormatter serializace metody jsou zastaralé a In-box BinaryFormatter implementace odstraněna a vždy vyvolá. |
EnableUnsafeUTF7Encoding |
Pokud je nastavena hodnota false, odebere nezabezpečený kód kódování UTF-7. Další informace naleznete v tématu Cesty kódu UTF-7 jsou zastaralé. |
EventSourceSupport |
Pokud je nastavená hodnota false, odebere kód a logiku související s EventSource. |
Http3Support (.NET 10+) |
Pokud je nastavená hodnota false, odebere kód související s podporou protokolu HTTP/3 v System.Net.Http. |
HttpActivityPropagationSupport |
Pokud je nastavená hodnota false, odebere kód související s podporou diagnostiky pro System.Net.Http. |
InvariantGlobalization |
Pokud je nastavená hodnota true, odebere kód a data specifická pro globalizaci. Další informace naleznete v tématu Invariantní režim. |
MetadataUpdaterSupport |
Pokud je nastavená hodnota false, odebere logiku specifickou pro aktualizaci metadat související s opětovným načítáním za provozu. |
MetricsSupport |
Pokud je nastavená hodnota false, odebere podporu System.Diagnostics.Metrics instrumentace. |
StackTraceSupport (.NET 8+) |
Pokud je tato možnost nastavená, falseodebere podporu generování trasování zásobníku (například Environment.StackTraceException.ToString) modulem runtime. Množství informací odebraných z trasovacích řetězců zásobníku může záviset na jiných možnostech nasazení. Tato možnost nemá vliv na trasování zásobníku generované ladicím programem. |
UseNativeHttpHandler |
Při nastavení použije truevýchozí implementaci HttpMessageHandler platformy pro Android a iOS a odebere spravovanou implementaci. |
UseSizeOptimizedLinq (.NET 10+) |
Pokud je nastavená hodnota true, odebere některé optimalizace propustnosti v LINQ, které nepříznivě ovlivňují velikost aplikace. Výchozí hodnota je truePublishAot; nemusí být možné nativně zkompilovat některé aplikace s touto vlastností nastavenou na false. |
UseSystemResourceKeys |
Pokud je nastavená hodnota true, odstraní zprávy výjimek pro System.* sestavení. Při vyvolání výjimky ze System.* sestavení je zpráva zjednodušené ID prostředku místo celé zprávy. |
XmlResolverIsNetworkingEnabledByDefault (.NET 8+) |
Pokud je nastavená hodnota false, odebere podporu pro překlad adres URL, které nejsou soubory v souboru .System.Xml Podporuje se pouze překlad systému souborů. |
Tyto vlastnosti způsobují oříznutí souvisejícího kódu a také zakázání funkcí prostřednictvím souboru runtimeconfig . Další informace o těchto vlastnostech, včetně odpovídajících možností modulu runtimeconfig , naleznete v tématu přepínače funkcí. Některé sady SDK můžou mít výchozí hodnoty pro tyto vlastnosti.
Funkce rozhraní zakázané při oříznutí
Následující funkce nejsou kompatibilní s oříznutím, protože vyžadují kód, na který se staticky neodkazuje. Tyto funkce jsou ve výchozím nastavení zakázané v oříznutých aplikacích.
Upozorňující
Povolte tyto funkce na vlastní nebezpečí. Pravděpodobně přeruší oříznuté aplikace bez další práce, aby zachovaly dynamicky odkazovaný kód.
<BuiltInComInteropSupport>Integrovaná podpora modelu COM je zakázaná.
<CustomResourceTypesSupport>Použití vlastních typů prostředků se nepodporuje. Cesty kódu ResourceManager, které používají reflexi pro vlastní typy prostředků, jsou oříznuté.
<EnableCppCLIHostActivation>Aktivace hostitele C++/CLI je zakázaná.
<EnableUnsafeBinaryFormatterInDesigntimeLicenseContextSerialization>DesigntimeLicenseContextSerializer
BinaryFormatterpoužití serializace je zakázáno.<StartupHookSupport>Spuštění kódu před
MainspuštěnímDOTNET_STARTUP_HOOKSnení podporováno. Další informace najdete v tématu háček pro spuštění hostitele.