Vältige sõlmede hägustumist, mis kasutavad Dotfuscatori nimeruumis System.Xml klasse, mis põhjustavad vigu

Lehekülg uuendatud :
Lehe loomise kuupäev :

Sümptomite kontrollimine

Looge uus projekt. See võib olla Windowsi vorm või WPF, kuid siin loome WPF-rakenduse.

Kirjutage kood, et kasutada klasse, mis kuuluvad nimeruumi System.Xml. Siin kasutame klasse "XmlDocument" ja "XmlNode" järgmiselt.

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

Pärast ehitamist valige menüü tööriistadest "PreEmptive Dotfuscator and Analytics" ja käivitage see.

PreEmptive Dotfuscator and Analytics を起動

Lisage loodud .exe fail ja koostage see.

.exe ファイルを追加

Seejärel kuvatakse järgmine tõrketeade ja järk nurjub.

See ei ole hallatav moodul (C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\Silverlight\v4.0\Profile\WindowsPhone71\ja\System.Xml.dll). Koostage tõrge.

ビルドエラー

Üritasin teada saada, mis seda viga põhjustas, kuid ma ei leidnud selget vastust. Arvestades, et ingliskeelsel saidil ei ole teavet ja et System.Xml.dll teel on "en", võite arvata, et see on ainulaadne viga peale inglise keskkonna.

Lahendus

Kuigi projekt viitab Windowsi kliendisüsteemile System.Xml.dll, viitab see Dotfuscatoriga koostet windows phone system.xml.dll nii et kopeerisime system.xml-i sunniviisiliselt kohalikult.dll Ma tahaksin vältida ehitusvigu, viidates sellele.

Avage projekti viited, paremklõpsake valikut System.Xml ja valige Atribuudid.

プロパティを選択

Muutke kohalikus eksemplaris olev üksus väärtuseks Tõene.

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

Selles olekus ehitamisel väljastatakse "System.Xml.dll" koos .exe failiga.

System.Xml.dll が出力される

Avage Dotfuscator ja lisage "System.Xml.dll" koos assembleriga, mida soovite hägustada. See segab assembleri nii, et see ei viita paigaldatud raamistiku DLL-ile ja näeb kohalikku DLL-i.

Pange tähele, et atribuut System.Xml.dll kontrollib teekirežiimi. Ilma selle kontrollita võib ka System.Xml.dll hägustada ja klassinimed, millele see viitab, võivad muutuda. Muidugi, kui klassi nimi muutub, ei saa te rakendust normaalselt käivitada.

System.Xml.dll を追加

Kui ehitate selles olekus, lõpetab see edukalt.

ビルド成功

Võite olla kindel, et hägune rakendus käivitatakse iseenesest ilma probleemideta.

アプリケーションを起動

Siin esitatud sisu on mõnevõrra keeruline lahendus, nii et me ei saa garanteerida, et see on tõhus isegi vastavalt ehitatud sõlmede puhul. Isegi kui ehitamine on edukas ja seda saab alustada, ei saa eitada võimalust, et see langeb konkreetse protsessi läbiviimisel, nii et palun kontrollige operatsiooni enne vabastamist korralikult.

Isegi kui see ei piirdu nimeruumiga System.Xml, on hägustamine tundlik funktsioon, mida peate veenduma, et järjepidevus säilib. Eelkõige peegelduse kasutamisel mõjutavad see tõenäoliselt I/O-ga seotud asju, nagu fail I/O ja suhtlemine väliste API-dega, seega olge ettevaatlik.