تجنب تشويش التجميعات التي تستخدم فئات في مساحة اسم 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;
}
}
}
بعد البناء ، حدد "PreEmptive Dotfuscator and Analytics" من الأدوات الموجودة في القائمة وقم بتشغيلها.
أضف ملف .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.
عند إنشاء في هذه الحالة، يتم إخراج "System.Xml.dll" مع الملف .exe.
افتح Dotfuscator وأضف "System.Xml.dll" إلى جانب التجميع الذي تريد تشويشه. يؤدي هذا إلى تعتيم التجميع بحيث لا يشير إلى DLL الخاص بالإطار المثبت ويرى DLL المحلي.
لاحظ أن الخاصية System.Xml.dll تتحقق من وضع المكتبة. بدون هذا التحقق، قد يتم أيضا التعتيم على System.Xml.dll، وقد تتغير أسماء الفئات التي يشير إليها. بالطبع ، إذا تغير اسم الفصل ، فلن تتمكن من بدء تشغيل التطبيق بشكل طبيعي.
إذا قمت بالإنشاء في هذه الحالة ، إكماله بنجاح.
يمكنك التأكد من أن التطبيق الغامض يبدأ من تلقاء نفسه دون مشاكل.
المحتوى المعروض هنا هو حل بديل بطريقة صعبة إلى حد ما ، لذلك لا يمكننا ضمان أنه سيكون فعالا حتى بالنسبة للتجميعات التي تم إنشاؤها وفقا لذلك. حتى إذا كان البناء ناجحا ويمكن بدء تشغيله ، فلا يمكن إنكار احتمال سقوطه عند تنفيذ عملية معينة ، لذا يرجى التحقق من العملية بشكل صحيح قبل الإصدار.
حتى لو لم يقتصر الأمر على مساحة اسم System.Xml ، فإن التشويش هو ميزة حساسة تحتاج إلى التأكد من الحفاظ على الاتساق. على وجه الخصوص ، عند استخدام الانعكاس ، من المحتمل أن تتأثر الأشياء المتعلقة بالإدخال / الإخراج مثل ملف الإدخال / الإخراج والتفاعل مع واجهات برمجة التطبيقات الخارجية ، لذا كن حذرا.