Избягвайте замъгляване на възли, които използват класове в пространството от имена System.Xml в Dotfuscator, което ще доведе до грешки
Проверка на Симптомите
Създаване на нов проект. Тя може да бъде Windows Form или WPF, но тук създаваме WPF приложение.
Напишете код, за да използвате класове, които принадлежат към пространството на имената system.Xml. Тук използваме класовете "XmlDocument" и "XmlNode", както следва.
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;
}
}
}
След изграждането изберете "PreEmptive Dotfuscator and Analytics" от инструментите в менюто и го стартирайте.
Добавете .exe файл, който сте създали, и го изградете.
След това се появява следното съобщение за грешка и компилацията е неуспешна.
Това не е управляван модул (C:\Program Files (x86)\Референтни асембли\Microsoft\Framework\Silverlight\v4.0\Профил\WindowsPhone71\ja\System.Xml.dll). Грешка при изграждане.
Опитах се да разбера какво причинява тази грешка, но не можах да намеря ясен отговор. Като се има предвид, че няма информация на английския сайт и че пътят System.Xml.dll има "en", можете да познаете, че това е уникална грешка, различна от английската среда.
Заобиколно решение
Въпреки че проектът препраща към клиента на Windows System.Xml.dll, когато изграждате с Dotfuscator, той препраща към събранието в Windows Phone System.Xml.dll така че насила копирахме System.Xml локално.dll Бих искал да избегна грешките в изграждането, като се позова на него.
Отворете препратките на проекта, щракнете с десния бутон върху System.Xml и изберете Свойства.
Промяна на елемента в локалното копие на True.
Когато изграждате в това състояние, "System.Xml.dll" се изход заедно с .exe файл.
Отворете Dotfuscator и добавете "System.Xml.dll" заедно с събранието, което искате да обфускате. Това възпрепятства сглобяването, така че да не се отнася до DLL на инсталираната рамка и вижда местната DLL.
Обърнете внимание, че свойството System.Xml.dll проверява "Режим на библиотека". Без тази проверка, System.Xml.dll също може да бъде затъмнено, а имената на класовете, които препратките към нея могат да се променят. Разбира се, ако името на класа се промени, няма да можете да стартирате приложението нормално.
Ако изградите в това състояние, то ще завърши успешно.
Можете да бъдете сигурни, че обфусканото приложение стартира самостоятелно без проблеми.
Съдържанието, представено тук, е заобиколно решение по донякъде сложен начин, така че не можем да гарантираме, че то ще бъде ефективно дори за сглобки, които са били съответно конструирани. Дори ако компилацията е успешна и може да бъде стартирана, няма отричане на възможността, че тя ще падне при извършване на конкретен процес, така че моля, проверете операцията правилно преди освобождаване.
Дори да не се ограничава до пространството на имената System.Xml, обфускацията е чувствителна функция, която трябва да се уверите, че последователността се поддържа. По-специално, когато се използва размисъл, има вероятност да бъдат засегнати i/O свързани неща като файл I/O и взаимодействие с външни API, така че бъдете внимателни.