Izogibajte se zajebavanju sklopov, ki uporabljajo razrede v imenski prostor System.Xml v Dotfuscatorju, ki bodo povzročili napake
Preverjanje simptomov
Ustvarite nov projekt. Lahko je Obrazec Windows ali WPF, vendar tukaj ustvarjamo aplikacijo WPF.
Napišite kodo za uporabo razredov, ki spadajo v imenski prostor System.Xml. Tukaj uporabljamo razrede »XmlDocument« in »XmlNode« na naslednji način.
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 gradnji izberite »PreEmptive Dotfuscator and Analytics« v orodjih v meniju in ga zaženite.
Dodajte .exe, ki ste jo ustvarili in jo zgradili.
Nato se prikaže naslednje sporočilo o napaki in gradenju ne uspe.
To ni upravljani modul (C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\Silverlight\v4.0\Profile\WindowsPhone71\ja\System.Xml.dll). Napaka pri graditvi.
Poskušal sem ugotoviti, kaj povzroča to napako, vendar nisem našel jasnega odgovora. Glede na to, da na angleškem mestu ni informacij in da je pot System.Xml.dll ima "en", lahko ugibate, da gre za edinstveno napako, ki ni angleško okolje.
Zaodložje
Čeprav se projekt sklicuje na odjemalec Windows System.Xml.dll, ko gradite z Dotfuscatorjem, se sklicuje na sestavo v sistemu Windows Phone System.Xml.dll zato smo na silo kopirali Sistem.Xml lokalno.dll Rad bi se izognil napakam pri graditvi, tako da bi se sklicevanje na to.
Odprite sklice projekta, z desno tipko miške kliknite System.Xml in izberite Lastnosti.
Spremenite element v lokalni kopiji v True.
Ko gradite v tem stanju, je »System.Xml.dll« izhod skupaj z .exe datoteko.
Odprite Dotfuscator in dodajte »System.Xml.dll« skupaj s sestavo, ki jo želite. To ovira sestavljanje tako, da se ne nanaša na DLL nameščenega okvirja in vidi lokalno DLL.
Upoštevajte, da lastnost System.Xml .dll način knjižnice. Brez tega preverjanja lahko sistem.xml .dll tudi zamaknjena, imena razredov, ki jih sklicuje, pa se lahko spremenijo. Seveda, če se ime razreda spremeni, ne boste mogli normalno zagnati aplikacije.
Če gradite v tem stanju, se bo uspešno končala.
Lahko ste prepričani, da se zamahnjena aplikacija zažene sama brez težav.
Vsebina, predstavljena tukaj, je nekoliko zapleteno delo, zato ne moremo zagotoviti, da bo učinkovita tudi za sklope, ki so bili ustrezno zgrajeni. Tudi če je graditev uspešna in jo je mogoče zagnati, ni mogoče zanikati možnosti, da bo padla pri izvajanju določenega procesa, zato pred sproščanjem ustrezno preverite operacijo.
Tudi če ni omejen na imenski prostor System.Xml, je obfuscation občutljiva funkcija, ki jo morate prepričati, da je skladnost ohranjena. Zlasti pri uporabi odsevov lahko vplivajo na I/I povezane stvari, kot so datoteke I/I in interakcija z zunanjimi API-ji, zato bodite previdni.