Izvairieties no tādu mezglu aizsegšanas, kas izmanto klases System.Xml nosaukumvietā Dotfuscator, kas radīs kļūdas

Lapa atjaunota :
Lapas izveides datums :

Simptomu pārbaude

Izveidojiet jaunu projektu. Tas var būt Windows forma vai WPF, bet šeit mēs veidojam WPF lietojumprogrammu.

Rakstiet kodu, lai izmantotu klases, kas pieder system.xml nosaukumvietai. Šeit mēs izmantojam "XmlDocument" un "XmlNode" klases šādi.

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ēc izveides izvēlnē esošajos rīkos atlasiet "PreEmptive Dotfuscator and Analytics" un palaidiet to.

PreEmptive Dotfuscator and Analytics を起動

Pievienojiet izveidoto .exe failu un izveidojiet to.

.exe ファイルを追加

Pēc tam tiek parādīts šāds kļūdas ziņojums, un būvējums neizdodas.

Tas nav pārvaldīts modulis (C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\Silverlight\v4.0\Profile\WindowsPhone71\ja\System.Xml.dll). Būvējuma kļūda.

ビルドエラー

Es mēģināju noskaidrot, kas izraisīja šo kļūdu, bet es nevarēju atrast skaidru atbildi. Ņemot vērā, ka angļu vietnē nav informācijas un ka System.Xml.dll ceļam ir "en", jūs varat uzminēt, ka tā ir unikāla kļūda, kas nav angļu vide.

Risinājums

Lai gan projektā ir atsauce uz Windows klientu System.Xml.dll, veidojot ar Dotfuscator, tas atsaucas uz montāžu Windows Phone System.Xml.dll tāpēc mēs piespiedu kārtā nokopējām System.Xml lokāli.dll Es gribētu izvairīties no būvēšanas kļūdām, atsaucoties uz to.

Atveriet projekta atsauces, ar peles labo pogu noklikšķiniet uz System.Xml un izvēlieties Rekvizīti.

プロパティを選択

Mainiet vienumu lokālajā kopijā uz Patiess.

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

Veidojot šādā stāvoklī, "System.Xml.dll" tiek izvadīts kopā ar .exe failu.

System.Xml.dll が出力される

Atveriet Dotfuscator un pievienojiet "System.Xml.dll" kopā ar montāžu, kuru vēlaties aizsegt. Tas aptumšo montāžu tā, lai tas neattiektos uz instalētās struktūras DLL un redzētu vietējo DLL.

Ņemiet vērā, ka rekvizīts System.Xml.dll pārbauda bibliotēkas režīmu. Bez šīs pārbaudes System.Xml.dll var arī tikt apslēpts, un var mainīties klašu nosaukumi, uz kuriem tas atsaucas. Protams, ja klases nosaukums mainās, jūs nevarēsit normāli sākt pieteikumu.

System.Xml.dll を追加

Ja jūs veidojat šajā stāvoklī, tas tiks veiksmīgi pabeigts.

ビルド成功

Jūs varat būt pārliecināti, ka apslēptā lietojumprogramma tiek palaista pati bez problēmām.

アプリケーションを起動

Šeit izklāstītais saturs ir nedaudz sarežģīts risinājums, tāpēc mēs nevaram garantēt, ka tas būs efektīvs pat attiecībā uz komplektiem, kas ir attiecīgi uzbūvēti. Pat ja būvēšana ir veiksmīga un to var sākt, nevar noliegt iespēju, ka tā samazināsies, veicot konkrētu procesu, tāpēc, lūdzu, pirms izlaišanas pārbaudiet darbību pareizi.

Pat ja tas neaprobežojas tikai ar System.Xml nosaukumvietu, aizklāšana ir jutīgs līdzeklis, kas jums nepieciešams, lai pārliecinātos, ka konsekvence tiek saglabāta. Jo īpaši, izmantojot pārdomas, iespējams, tiks ietekmētas ar I/O saistītas lietas, piemēram, faila I/O un mijiedarbība ar ārējām API, tāpēc esiet piesardzīgs.