تجنب تشويش التجميعات التي تستخدم فئات في مساحة اسم System.Xml في Dotfuscator التي من شأنها أن تسبب أخطاء

تحديث الصفحة :
تاريخ إنشاء الصفحة :

التحقق من الأعراض

إنشاء مشروع جديد. يمكن أن يكون Windows Form أو WPF ، لكننا هنا نقوم بإنشاء تطبيق WPF.

كتابة التعليمات البرمجية لاستخدام الفئات التي تنتمي إلى مساحة اسم System.Xml. هنا نستخدم فئات "XmlDocument" و "XmlNode" على النحو التالي.

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

بعد البناء ، حدد "PreEmptive Dotfuscator and Analytics" من الأدوات الموجودة في القائمة وقم بتشغيلها.

PreEmptive Dotfuscator and Analytics を起動

أضف ملف .exe الذي قمت بإنشائه وقم بإنشائه.

.exe ファイルを追加

ثم، تظهر رسالة الخطأ التالية وفشل الإنشاء.

هذه ليست وحدة نمطية مدارة (C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\Silverlight\v4.0\Profile\WindowsPhone71\ja\System.Xml.dll). خطأ في البناء.

ビルドエラー

حاولت معرفة سبب هذا الخطأ ، لكنني لم أتمكن من العثور على إجابة واضحة. بالنظر إلى عدم وجود معلومات على موقع اللغة الإنجليزية وأن مسار System.Xml.dll يحتوي على "en" ، يمكنك تخمين أنه خطأ فريد بخلاف البيئة الإنجليزية.

الحل البديل

على الرغم من أن المشروع يشير إلى عميل Windows System.Xml.dll ، عند الإنشاء باستخدام Dotfuscator ، فإنه يشير إلى التجميع في Windows Phone System.Xml .dll لذلك قمنا بنسخ System.Xml بالقوة محليا.dll أود تجنب أخطاء البناء من خلال الإشارة إليها.

افتح مراجع المشروع، وانقر بزر الماوس الأيمن فوق System.Xml، واختر خصائص.

プロパティを選択

قم بتغيير العنصر الموجود في النسخة المحلية إلى True.

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

عند إنشاء في هذه الحالة، يتم إخراج "System.Xml.dll" مع الملف .exe.

System.Xml.dll が出力される

افتح Dotfuscator وأضف "System.Xml.dll" إلى جانب التجميع الذي تريد تشويشه. يؤدي هذا إلى تعتيم التجميع بحيث لا يشير إلى DLL الخاص بالإطار المثبت ويرى DLL المحلي.

لاحظ أن الخاصية System.Xml.dll تتحقق من وضع المكتبة. بدون هذا التحقق، قد يتم أيضا التعتيم على System.Xml.dll، وقد تتغير أسماء الفئات التي يشير إليها. بالطبع ، إذا تغير اسم الفصل ، فلن تتمكن من بدء تشغيل التطبيق بشكل طبيعي.

System.Xml.dll を追加

إذا قمت بالإنشاء في هذه الحالة ، إكماله بنجاح.

ビルド成功

يمكنك التأكد من أن التطبيق الغامض يبدأ من تلقاء نفسه دون مشاكل.

アプリケーションを起動

المحتوى المعروض هنا هو حل بديل بطريقة صعبة إلى حد ما ، لذلك لا يمكننا ضمان أنه سيكون فعالا حتى بالنسبة للتجميعات التي تم إنشاؤها وفقا لذلك. حتى إذا كان البناء ناجحا ويمكن بدء تشغيله ، فلا يمكن إنكار احتمال سقوطه عند تنفيذ عملية معينة ، لذا يرجى التحقق من العملية بشكل صحيح قبل الإصدار.

حتى لو لم يقتصر الأمر على مساحة اسم System.Xml ، فإن التشويش هو ميزة حساسة تحتاج إلى التأكد من الحفاظ على الاتساق. على وجه الخصوص ، عند استخدام الانعكاس ، من المحتمل أن تتأثر الأشياء المتعلقة بالإدخال / الإخراج مثل ملف الإدخال / الإخراج والتفاعل مع واجهات برمجة التطبيقات الخارجية ، لذا كن حذرا.