Sdílet prostřednictvím


Známé nekompatibility oříznutí

Tento článek uvádí vzory, které nejsou kompatibilní s oříznutím s aktuálním nástrojem.

serializátory založené na Reflexe

Alternativa: serializátory bez Reflexe.

Mnoho použití reflexe může být kompatibilní s oříznutím, jak je popsáno v úvodu k oříznutí upozornění. Serializátory však mají tendenci mít složité použití reflexe. Mnoho z těchto použití se nedá analyzovat v době sestavení. Nejlepší možností je bohužel často přepisovat systém tak, aby používal generování zdroje.

Následující tabulka uvádí oblíbené serializátory založené na reflexi a jejich doporučené alternativy:

Serializers Alternativa
Newtonsoft.Json Zdroj vygenerovaný System.Text.Json
System.Configuration.ConfigurationManager Generátor zdrojů vazby konfigurace
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter Kvůli chybám zabezpečení a spolehlivosti migrujte ze serializace BinaryFormatter.

Generování kódu za běhu prostřednictvím JIT

Generování kódu za běhu prostřednictvím JIT, například prostřednictvím System.Reflection.Emit nekompatibilní s oříznutím.

Dynamické načítání a spouštění sestavení

Oříznutí a dynamické načítání sestavení je běžným problémem pro systémy, které podporují moduly plug-in nebo rozšíření, obvykle prostřednictvím rozhraní API, jako je LoadFrom(String). Oříznutí spoléhá na zobrazení všech sestavení v době sestavení, takže ví, který kód se používá, a nedá se oříznout. Většina systémů plug-in načítá kód třetí strany dynamicky, takže není možné, aby se zastřihovací modul zjistil, jaký kód je potřeba.

Nekompatibilita platformy Windows

Následující části obsahují seznam známých nekompatibility s oříznutím ve Windows.

Programování v net s využitím C++/CLI

Programování v jazyce C++/CLI v současné době nepodporuje ořezávání.

Integrované zařazování modelu COM

Alternativní řešení: Obálky MODELU COM

Automatické zařazování modelu COM bylo vytvořeno v rozhraní .NET od rozhraní .NET Framework 1.0. Používá analýzu kódu za běhu k automatickému převodu mezi nativními objekty MODELU COM a spravovanými objekty .NET. Analýza oříznutí bohužel nemůže vždy předpovědět, co je potřeba zachovat pro automatické zařazování modelu COM. Pokud se ale místo toho používají obálky MODELU COM, může analýza oříznutí zaručit, že se všechny použité kódy správně zachovají.

WPF

Architektura WPF (Windows Presentation Foundation) výrazně využívá reflexi a některé funkce jsou silně závislé na kontrole kódu za běhu. Analýzu oříznutí není možné zachovat veškerý potřebný kód pro aplikace WPF. Po oříznutí bohužel nelze spustit téměř žádné aplikace WPF, takže podpora oříznutí pro WPF je nyní v sadě .NET SDK zakázaná. Informace o tom, jak povolit oříznutí pro WPF, najdete v tématu oříznutí, který není kompatibilní s WPF.

Windows Forms

Architektura model Windows Forms využívá minimální reflexi, ale je silně závislá na integrovaném zařazování modelu COM. Téměř žádné model Windows Forms aplikace se bohužel nedají spustit bez integrovaného zařazování modelu COM, takže podpora oříznutí pro model Windows Forms aplikací je v současné době v sadě .NET SDK zakázaná. Informace o tom, jak povolit oříznutí pro model Windows Forms, najdete v tématu Oříznout problémy kompatibilní s WinForms.