Ismert vágási inkompatibilitások

Ez a cikk olyan mintákat sorol fel, amelyek nem kompatibilisek az aktuális eszközzel való vágással.

Önkifejezés ion-alapú szerializálók

Alternatív: Önkifejezés ion-mentes szerializálók.

A visszaverődés számos felhasználási módja használható vágási kompatibilissé, ahogy azt a Bevezetés a vágási figyelmeztetések leírásában ismerteti. A szerializálók azonban általában összetett tükröződéseket használnak. Ezek közül a felhasználások közül sok nem készíthető el a létrehozáskor. Sajnos a legjobb megoldás gyakran a rendszer újraírása a forrásgenerálás használatára.

Az alábbi táblázat a népszerű tükröződésalapú szerializálókat és azok ajánlott alternatíváit sorolja fel:

Szerializálók Alternatív megoldás
Newtonsoft.Json Létrehozott forrás System.Text.Json
System.Configuration.ConfigurationManager Konfigurációkötési forrásgenerátor
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter Migrálás a BinaryFormatter szerializálástól biztonsági és megbízhatósági hibái miatt.

Futtatókörnyezeti kód generálása JIT-en keresztül

A futtatókörnyezeti kód JIT-en keresztüli létrehozása például System.Reflection.Emit nem kompatibilis a vágással.

Dinamikus szerelvénybetöltés és -végrehajtás

A beépülő modulokat vagy bővítményeket támogató rendszereknél gyakori probléma a vágás és a dinamikus szerelvénybetöltés, általában api-k, például LoadFrom(String). A vágás az összes szerelvény buildeléskor való megtekintésére támaszkodik, így tudja, hogy melyik kódot használja a rendszer, és nem lehet levágni. A legtöbb beépülő modulrendszer dinamikusan tölti be a külső kódokat, így a vágó nem tudja azonosítani, hogy milyen kódra van szükség.

A Windows platform inkompatibilitásai

Az alábbi szakaszok a windowsos vágás ismert inkompatibilitásait sorolják fel.

NET-programozás C++/CLI használatával

A C++/CLI-vel való NET-programozás jelenleg nem támogatja a vágást.

Beépített COM-rendezés

Alternatív megoldás: COM Burkolók

Az automatikus COM-rendezés az 1.0-s .NET-keretrendszer óta be van építve a .NET-be. Futásidejű kódelemzést használ a natív COM-objektumok és a felügyelt .NET-objektumok közötti automatikus konvertáláshoz. Sajnos a vágáselemzés nem mindig tudja előre jelezni, hogy milyen .NET-kódot kell megőrizni az automatikus COM-rendezéshez. Ha azonban com-burkolókat használ, a vágáselemzés garantálja, hogy az összes használt kód megfelelően megmarad.

WPF

A Windows megjelenítési alaprendszer (WPF) keretrendszer jelentős mértékben használja a tükröződést, és egyes funkciók erősen függenek a futásidejű kódvizsgálattól. A vágási elemzés nem őrizheti meg a WPF-alkalmazásokhoz szükséges összes kódot. Sajnos szinte egyetlen WPF-alkalmazás sem futtatható a vágás után, ezért a WPF vágási támogatása jelenleg le van tiltva a .NET SDK-ban. Lásd: A WPF nem vágáskompatibilis probléma a WPF-hez való vágás engedélyezésének előrehaladásával kapcsolatban.

Windows Forms

A Windows Forms keretrendszer minimális mértékben használja a tükröződést, de erősen függ a beépített COM-rendezéstől. Sajnos szinte egyetlen Windows Forms-alkalmazás sem futtatható beépített COM-rendezés nélkül, ezért a Windows Forms-alkalmazások vágási támogatása jelenleg le van tiltva a .NET SDK-ban. Tekintse meg a WinForms vágáskompatibilissé tételével kapcsolatos problémát a Windows Forms vágásának engedélyezésével kapcsolatos előrehaladásról.