Kerülje az olyan szerelvények elhomályosítását, amelyek a Dotfuscator System.Xml névterében lévő osztályokat használnak, amelyek hibákat okozhatnak

Oldal frissítve :
Oldal létrehozásának dátuma :

A tünetek ellenőrzése

Hozzon létre egy új projektet. Ez lehet Windows Form vagy WPF, de itt létrehozunk egy WPF alkalmazást.

Írjon kódot a System.Xml névtérhez tartozó osztályok használatához. Itt az "XmlDocument" és az "XmlNode" osztályokat használjuk az alábbiak szerint.

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 名前空間のクラスを使用したコード

Az építés után válassza a "PreEmptive Dotfuscator and Analytics" lehetőséget a menüben található eszközök közül, és indítsa el.

PreEmptive Dotfuscator and Analytics を起動

Adja hozzá a létrehozott .exe fájlt, és hozza létre.

.exe ファイルを追加

Ezután a következő hibaüzenet jelenik meg, és a build sikertelen lesz.

Ez nem felügyelt modul (C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\Silverlight\v4.0\Profile\WindowsPhone71\ja\System.Xml.dll). Build hiba.

ビルドエラー

Megpróbáltam kideríteni, hogy mi okozza ezt a hibát, de nem találtam egyértelmű választ. Figyelembe véve, hogy az angol oldalon nincs információ, és hogy a System.Xml.dll elérési út "en" -vel rendelkezik, kitalálhatja, hogy ez egy egyedi hiba, amely nem más, mint az angol környezet.

Kerülő megoldás

Annak ellenére, hogy a projekt a System.Xml.dll Windows-ügyfélre hivatkozik, amikor a Dotfuscatorral épít, a Windows Phone System.Xml szerelvényére hivatkozik.dll ezért helyileg erőszakkal másoltuk a System.Xml fájlt.dll Szeretném elkerülni az építési hibákat azzal, hogy hivatkozom rá.

Nyissa meg a projekt referenciáit, kattintson a jobb gombbal a System.Xml fájlra, és válassza a Tulajdonságok parancsot.

プロパティを選択

Módosítsa a helyi példányban lévő elemet True (Igaz) értékre.

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

Ha ebben az állapotban épít, a "System.Xml.dll" a .exe fájllal együtt kerül kimenetre.

System.Xml.dll が出力される

Nyissa meg a Dotfuscator alkalmazást, és adja hozzá a "System.Xml.dll" fájlt az elhomályosítani kívánt szerelvényhez. Ez elhomályosítja az összeszerelést, így az nem hivatkozik a telepített keretrendszer DLL-jére, és nem látja a helyi DLL-t.

Vegye figyelembe, hogy a System.Xml.dll tulajdonság ellenőrzi a Könyvtár módot. Ezen ellenőrzés nélkül előfordulhat, hogy a System.Xml.dll is elhomályosul, és az általa hivatkozott osztálynevek megváltozhatnak. Természetesen, ha az osztály neve megváltozik, akkor nem tudja normálisan elindítani az alkalmazást.

System.Xml.dll を追加

Ha ebben az állapotban építkezik, akkor sikeresen befejeződik.

ビルド成功

Biztos lehet benne, hogy az elhomályosított alkalmazás problémamentesen indul el.

アプリケーションを起動

Az itt bemutatott tartalom kissé trükkös megoldás, így nem tudjuk garantálni, hogy még az ennek megfelelően felépített szerelvények esetében is hatékony lesz. Még akkor is, ha az összeállítás sikeres és elindítható, nem tagadható annak a lehetősége, hogy egy adott folyamat végrehajtásakor leesik, ezért kérjük, ellenőrizze megfelelően a műveletet a kiadás előtt.

Még ha nem is korlátozódik a System.Xml névtérre, az obfuszkáció érzékeny funkció, amelyet meg kell győződnie arról, hogy a konzisztencia megmarad. Különösen a reflexió használatakor az I/O-val kapcsolatos dolgok, például a fájl I/O-val és a külső API-kkal való interakció valószínűleg hatással lesz, ezért legyen óvatos.