Elakkan perhimpunan obfuscating yang menggunakan kelas dalam ruang nama System.Xml dalam Dotfuscator yang akan menyebabkan ralat

Laman dikemaskini :
Tarikh penciptaan halaman :

Memeriksa Gejala

Buat projek baru. Ia boleh menjadi Borang Windows atau WPF, tetapi di sini kami membuat aplikasi WPF.

Tulis kod untuk menggunakan kelas yang tergolong dalam ruang nama System.Xml. Di sini kita menggunakan kelas "XmlDocument" dan "XmlNode" seperti berikut.

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

Selepas membina, pilih "PreEmptive Dotfuscator and Analytics" dari alat dalam menu dan lancarkannya.

PreEmptive Dotfuscator and Analytics を起動

Tambah fail .exe yang anda cipta dan binanya.

.exe ファイルを追加

Kemudian, mesej ralat berikut muncul dan binaan gagal.

Ini bukan modul terurus (C:\Fail Program (x86)\Perhimpunan Rujukan\Microsoft\Framework\Silverlight\v4.0\Profile\WindowsPhone71\ja\System.Xml.dll). Ralat bina.

ビルドエラー

Saya cuba mencari tahu apa yang menyebabkan kesilapan ini, tetapi saya tidak dapat mencari jawapan yang jelas. Memandangkan tidak ada maklumat di laman web Inggeris dan bahawa system.Xml.dll jalan mempunyai "en", anda boleh meneka bahawa ia adalah ralat yang unik selain daripada persekitaran bahasa Inggeris.

Penyelesaian

Walaupun projek itu merujuk klien Windows System.Xml.dll, apabila anda membina dengan Dotfuscator, ia merujuk pemasangan dalam Windows Phone System.Xml.dll jadi kami secara paksa menyalin System.Xml secara tempatan.dll Saya ingin mengelakkan kesilapan membina dengan merujuk kepadanya.

Buka rujukan projek, klik kanan System.Xml dan pilih Properties.

プロパティを選択

Tukar item dalam salinan setempat kepada Benar.

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

Apabila anda membina dalam keadaan ini, "System.Xml.dll" dikeluarkan bersama-sama dengan fail .exe.

System.Xml.dll が出力される

Buka Dotfuscator dan tambah "System.Xml.dll" bersama-sama dengan pemasangan yang anda mahu mengelirukan. Ini mengelirukan perhimpunan supaya ia tidak merujuk kepada DLL rangka kerja yang dipasang dan melihat DLL tempatan.

Ambil perhatian bahawa sifat System.Xml.dll menyemak Mod Perpustakaan. Tanpa semakan ini, System.Xml.dll juga boleh dikelirukan, dan nama kelas yang dirujuknya mungkin berubah. Sudah tentu, jika nama kelas berubah, anda tidak akan dapat memulakan aplikasi secara normal.

System.Xml.dll を追加

Jika anda membina dalam keadaan ini, ia akan berjaya diselesaikan.

ビルド成功

Anda boleh yakin bahawa aplikasi yang keliru dilancarkan sendiri tanpa masalah.

アプリケーションを起動

Kandungan yang dibentangkan di sini adalah penyelesaian dengan cara yang agak rumit, jadi kami tidak dapat menjamin bahawa ia akan berkesan walaupun untuk perhimpunan yang telah dibina dengan sewajarnya. Walaupun binaan berjaya dan boleh dimulakan, tidak dapat dinafikan kemungkinan bahawa ia akan jatuh apabila melakukan proses tertentu, jadi sila periksa operasi dengan betul sebelum dibebaskan.

Walaupun ia tidak terhad kepada ruang nama System.Xml, kekeliruan adalah ciri sensitif yang anda perlukan untuk memastikan bahawa konsistensi dikekalkan. Khususnya, apabila menggunakan refleksi, perkara yang berkaitan dengan I / O seperti fail I / O dan interaksi dengan API luaran mungkin akan terjejas, jadi berhati-hati.