Tránh làm xáo trộn các hội đồng sử dụng các lớp trong không gian tên System.Xml trong Dotfuscator sẽ gây ra lỗi

Trang Cập Nhật :
Ngày tạo trang :

Kiểm tra các triệu chứng

Tạo một dự án mới. Nó có thể là Windows Form hoặc WPF, nhưng ở đây chúng tôi đang tạo một ứng dụng WPF.

Viết mã để sử dụng các lớp thuộc không gian tên System.Xml. Ở đây chúng ta sử dụng các lớp "XmlDocument" và "XmlNode" như sau.

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

Sau khi xây dựng, chọn "PreEmptive Dotfuscator and Analytics" từ các công cụ trong menu và khởi chạy nó.

PreEmptive Dotfuscator and Analytics を起動

Thêm tệp .exe mà bạn đã tạo và xây dựng nó.

.exe ファイルを追加

Sau đó, thông báo lỗi sau xuất hiện và xây dựng không thành công.

Đây không phải là một mô-đun được quản lý (C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\Silverlight\v4.0\Profile\WindowsPhone71\ja\System.Xml.dll). Lỗi xây dựng.

ビルドエラー

Tôi đã cố gắng tìm hiểu nguyên nhân gây ra lỗi này, nhưng tôi không thể tìm thấy câu trả lời rõ ràng. Xem xét rằng không có thông tin trên trang web tiếng Anh và đường dẫn System.Xml.dll có "en", bạn có thể đoán rằng đó là một lỗi duy nhất khác với môi trường tiếng Anh.

Cách giải quyết

Mặc dù dự án tham chiếu đến máy khách Windows System.Xml.dll, khi bạn xây dựng với Dotfuscator, nó tham chiếu đến việc lắp ráp trong Windows Phone System.Xml.dll vì vậy chúng tôi buộc phải sao chép System.Xml cục bộ.dll Tôi muốn tránh lỗi xây dựng bằng cách tham khảo nó.

Mở các tham chiếu của dự án, bấm chuột phải vào System.Xml và chọn Thuộc tính.

プロパティを選択

Thay đổi mục trong bản sao cục bộ thành True.

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

Khi bạn xây dựng trong trạng thái này, "System.Xml.dll" được xuất ra cùng với tệp .exe.

System.Xml.dll が出力される

Mở Dotfuscator và thêm "System.Xml.dll" cùng với lắp ráp bạn muốn làm xáo trộn. Điều này làm xáo trộn việc lắp ráp để nó không tham chiếu đến DLL của framework đã cài đặt và thấy DLL cục bộ.

Lưu ý rằng thuộc tính System.Xml.dll kiểm tra Chế độ Thư viện. Nếu không có kiểm tra này, System.Xml.dll cũng có thể bị xáo trộn và tên lớp mà nó tham chiếu có thể thay đổi. Tất nhiên, nếu tên lớp thay đổi, bạn sẽ không thể khởi động ứng dụng bình thường.

System.Xml.dll を追加

Nếu bạn xây dựng trong trạng thái này, nó sẽ hoàn thành thành công.

ビルド成功

Bạn có thể chắc chắn rằng ứng dụng bị xáo trộn tự khởi chạy mà không gặp vấn đề gì.

アプリケーションを起動

Nội dung được trình bày ở đây là một cách giải quyết theo một cách hơi phức tạp, vì vậy chúng tôi không thể đảm bảo rằng nó sẽ có hiệu quả ngay cả đối với các hội đồng đã được xây dựng cho phù hợp. Ngay cả khi bản dựng thành công và có thể được bắt đầu, không thể phủ nhận khả năng nó sẽ rơi khi thực hiện một quy trình cụ thể, vì vậy vui lòng kiểm tra hoạt động đúng cách trước khi phát hành.

Ngay cả khi nó không giới hạn trong không gian tên System.Xml, xáo trộn là một tính năng nhạy cảm mà bạn cần để đảm bảo rằng tính nhất quán được duy trì. Đặc biệt, khi sử dụng phản xạ, những thứ liên quan đến I/O như I/O file và tương tác với các API bên ngoài có khả năng bị ảnh hưởng, vì vậy hãy cẩn thận.