Hindari mengaburkan rakitan yang menggunakan kelas di namespace System.Xml di Dotfuscator yang akan menyebabkan kesalahan

Halaman Diperbarui :
Tanggal pembuatan halaman :

Memeriksa Gejalanya

Buat proyek baru. Ini bisa berupa Windows Form atau WPF, tetapi di sini kita membuat aplikasi WPF.

Tulis kode untuk menggunakan kelas yang termasuk dalam namespace System.Xml. Di sini kita menggunakan kelas "XmlDocument" dan "XmlNode" sebagai 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 名前空間のクラスを使用したコード

Setelah membangun, pilih "PreEmptive Dotfuscator and Analytics" dari alat di menu dan luncurkan.

PreEmptive Dotfuscator and Analytics を起動

Tambahkan file .exe yang Anda buat dan buat.

.exe ファイルを追加

Kemudian, pesan kesalahan berikut muncul dan build gagal.

Ini bukan modul terkelola (C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\Silverlight\v4.0\Profile\WindowsPhone71\ja\System.Xml.dll). Kesalahan build.

ビルドエラー

Saya mencoba mencari tahu apa yang menyebabkan kesalahan ini, tetapi saya tidak dapat menemukan jawaban yang jelas. Mempertimbangkan bahwa tidak ada informasi di situs bahasa Inggris dan bahwa jalur System.xml.dll memiliki "en", Anda dapat menebak bahwa itu adalah kesalahan unik selain lingkungan bahasa Inggris.

Penanganan masalah

Meskipun proyek mereferensikan klien Windows System.xml.dll, ketika Anda membangun dengan Dotfuscator, itu mereferensikan perakitan di Windows Phone System.xml.dll jadi kami secara paksa menyalin System.xml secara lokal.dll Saya ingin menghindari kesalahan build dengan merujuknya.

Buka referensi proyek, klik kanan System.Xml, dan pilih Properties.

プロパティを選択

Ubah item dalam salinan lokal menjadi True.

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

Ketika Anda membangun dalam keadaan ini, "System.Xml.dll" adalah output bersama-sama dengan file .exe.

System.Xml.dll が出力される

Buka Dotfuscator dan tambahkan "System.xml.dll" bersama dengan rakitan yang ingin Anda usang. Ini mengaburkan rakitan sehingga tidak mengacu pada DLL kerangka kerja yang diinstal dan melihat DLL lokal.

Perhatikan bahwa system.xml.dll properti memeriksa mode perpustakaan. Tanpa pemeriksaan ini, System.xml.dll juga dapat dikaburkan, dan nama kelas yang dirujuknya dapat berubah. Tentu saja, jika nama kelas berubah, Anda tidak akan dapat memulai aplikasi secara normal.

System.Xml.dll を追加

Jika Anda membangun dalam keadaan ini, itu akan berhasil diselesaikan.

ビルド成功

Anda dapat yakin bahwa aplikasi yang dikaburkan diluncurkan dengan sendirinya tanpa masalah.

アプリケーションを起動

Konten yang disajikan di sini adalah solusi dengan cara yang agak rumit, jadi kami tidak dapat menjamin bahwa itu akan efektif bahkan untuk majelis yang telah dibangun sesuai dengan itu. Bahkan jika build berhasil dan dapat dimulai, tidak dapat disangkal kemungkinan bahwa itu akan jatuh ketika melakukan proses tertentu, jadi silakan periksa operasi dengan benar sebelum rilis.

Bahkan jika itu tidak terbatas pada namespace System.Xml, pengaburan adalah fitur sensitif yang Anda butuhkan untuk memastikan bahwa konsistensi dipertahankan. Secara khusus, saat menggunakan pantulan, hal-hal terkait I/O I/O seperti I/O file dan interaksi dengan API eksternal kemungkinan akan terpengaruh, jadi berhati-hatilah.