Vyhnite sa zahmlievaniu zostáv, ktoré používajú triedy v priestore názvov System.Xml v Dotfuscatore, ktoré spôsobia chyby

Stránka aktualizovaná :
Dátum vytvorenia strany :

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;
    }
  }
}

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

Po vytvorení vyberte z nástrojov v ponuke "PreEmptive Dotfuscator and Analytics" a spustite ho.

PreEmptive Dotfuscator and Analytics を起動

Pridajte súbor .exe, ktorý ste vytvorili, a vytvorte ho.

.exe ファイルを追加

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.

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

Keď vytvoríte v tomto stave, "System.Xml.dll" je výstupom spolu s .exe súborom.

System.Xml.dll が出力される

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.

System.Xml.dll を追加

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