הימנע מטשטוש הרכבות המשתמשות במחלקות במרחב השמות System.Xml ב- Dotfuscator שיגרום לשגיאות

עודכן דף :
תאריך יצירת דף :

בדיקת התסמינים

צור פרוייקט חדש. זה יכול להיות טופס Windows או 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 ו Analytics" מהכלים בתפריט והפעל אותו.

PreEmptive Dotfuscator and Analytics を起動

הוסף את קובץ .exe שיצרת ובנה אותו.

.exe ファイルを追加

לאחר מכן, מופיעה הודעת השגיאה הבאה והבנייה נכשלת.

זה לא מודול מנוהל (C:\Program Files (x86)\מכלולים של הפניה\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, ערפול הוא תכונה רגישה שעליך לוודא שהעקביות נשמרת. בפרט, בעת שימוש בהשתקפות, דברים הקשורים לקלט/פלט כגון קלט/פלט של קבצים ואינטראקציה עם ממשקי API חיצוניים צפויים להיות מושפעים, לכן היזהר.