Vyhnite sa zahmlievaniu zostáv, ktoré používajú triedy v priestore názvov System.Xml v Dotfuscatore, ktoré spôsobia chyby
Kontrola príznakov
Vytvorte nový projekt. Môže to byť Windows Form alebo WPF, ale tu vytvárame aplikáciu WPF.
Napíšte kód na použitie tried, ktoré patria do menného priestoru System.Xml. Tu používame triedy "XmlDocument" a "XmlNode" nasledovne.
using System.Windows;
using System.Xml;
namespace DotfuscatorTest
{
<summary>MainWindow.xaml の相互作用ロジック</;summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
XmlDocument doc = new XmlDocument();
doc.LoadXml("<a></a>");
XmlNode node = doc.FirstChild;
}
}
}
Po vytvorení vyberte z nástrojov v ponuke "PreEmptive Dotfuscator and Analytics" a spustite ho.
Pridajte súbor .exe, ktorý ste vytvorili, a vytvorte ho.
Potom sa zobrazí nasledujúce chybové hlásenie a zostava zlyhá.
Toto nie je spravovaný modul (C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\Silverlight\v4.0\Profile\WindowsPhone71\ja\System.Xml.dll). Chyba zostavy.
Snažil som sa zistiť, čo spôsobilo túto chybu, ale nemohol som nájsť jasnú odpoveď. Vzhľadom na to, že na anglickej stránke nie sú žiadne informácie a že cesta System.Xml.dll má "en", môžete hádať, že ide o jedinečnú chybu inú ako anglické prostredie.
Alternatívne riešenie
Aj keď projekt odkazuje na windows klienta System.Xml.dll, keď staviate s Dotfuscator, odkazuje na zostavu v systéme Windows Phone System.Xml.dll takže sme násilne skopírovali System.Xml lokálne.dll Chcel by som sa vyhnúť chybám vytvárania tým, že sa na to odvolávam.
Otvorte odkazy na projekt, kliknite pravým tlačidlom myši na položku System.Xml a vyberte položku Vlastnosti.
Zmeňte položku v lokálnej kópii na hodnotu True.
Keď vytvoríte v tomto stave, "System.Xml.dll" je výstupom spolu s .exe súborom.
Otvorte Dotfuscator a pridajte "System.Xml.dll" spolu so zostavou, ktorú chcete zahmliť. To zahmlieva zostavu tak, aby neodkazovalo na DLL inštalovaného rámca a videlo miestne DLL.
Upozorňujeme, že vlastnosť System.Xml.dll kontroluje režim knižnice. Bez tejto kontroly môže byť System.Xml.dll zahmlievaný a názvy tried, na ktoré odkazuje, sa môžu zmeniť. Samozrejme, ak sa zmení názov triedy, nebudete môcť spustiť aplikáciu normálne.
Ak budete stavať v tomto stave, bude úspešne dokončená.
Môžete si byť istí, že zahmlievaná aplikácia sa spustí sama bez problémov.
Obsah, ktorý je tu prezentovaný, je riešením trochu zložitým spôsobom, takže nemôžeme zaručiť, že bude účinný aj pre zostavy, ktoré boli podľa toho postavené. Aj keď je stavba úspešná a môže byť spustená, nemožno poprieť možnosť, že pri vykonávaní konkrétneho procesu padne, preto si operáciu pred vydaním poriadne skontrolujte.
Aj keď to nie je obmedzené na menný priestor System.Xml, zahmlievanie je citlivá funkcia, ktorú musíte uistiť, že konzistencia je zachovaná. Najmä pri použití odrazu sú pravdepodobne ovplyvnené veci súvisiace s vstupom a výstupom, ako je vstup/výstup súboru a interakcia s externými rozhraniami API, preto buďte opatrní.