Избягвайте замъгляване на възли, които използват класове в пространството от имена 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;
    }
  }
}

System.Xml 名前空間のクラスを使用したコード

След изграждането изберете "PreEmptive Dotfuscator and Analytics" от инструментите в менюто и го стартирайте.

PreEmptive Dotfuscator and Analytics を起動

Добавете .exe файл, който сте създали, и го изградете.

.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.

ローカル コピーの項目を True に変更

Когато изграждате в това състояние, "System.Xml.dll" се изход заедно с .exe файл.

System.Xml.dll が出力される

Отворете Dotfuscator и добавете "System.Xml.dll" заедно с събранието, което искате да обфускате. Това възпрепятства сглобяването, така че да не се отнася до DLL на инсталираната рамка и вижда местната DLL.

Обърнете внимание, че свойството System.Xml.dll проверява "Режим на библиотека". Без тази проверка, System.Xml.dll също може да бъде затъмнено, а имената на класовете, които препратките към нея могат да се променят. Разбира се, ако името на класа се промени, няма да можете да стартирате приложението нормално.

System.Xml.dll を追加

Ако изградите в това състояние, то ще завърши успешно.

ビルド成功

Можете да бъдете сигурни, че обфусканото приложение стартира самостоятелно без проблеми.

アプリケーションを起動

Съдържанието, представено тук, е заобиколно решение по донякъде сложен начин, така че не можем да гарантираме, че то ще бъде ефективно дори за сглобки, които са били съответно конструирани. Дори ако компилацията е успешна и може да бъде стартирана, няма отричане на възможността, че тя ще падне при извършване на конкретен процес, така че моля, проверете операцията правилно преди освобождаване.

Дори да не се ограничава до пространството на имената System.Xml, обфускацията е чувствителна функция, която трябва да се уверите, че последователността се поддържа. По-специално, когато се използва размисъл, има вероятност да бъдат засегнати i/O свързани неща като файл I/O и взаимодействие с външни API, така че бъдете внимателни.