سؤال

عندما تعتم هذا النموذج ، و "تصحيح" هذا

public partial class Form1 : Form
{
  public void Form1()
  {
    InitializeComponents();
  }

  protected override void OnShown(EventArgs e)
  {
      base.OnShown(e);
      Console.WriteLine("Name: "+this.Name);
      Console.WriteLine("FullName: "+this.GetType().FullName);
  }
}

الإخراج هو مثل هذا:

الاسم:Form1
FullName:#ياب.#الزاب


السؤال
لماذا FullName غموض?
Form1 هو الجمهور لذا أتوقع SmartAssembly تجاهل ذلك.

معلومات اضافية
Form1 هو public partial وذلك هو مصمم.cs

بلدي SmartAssembly إعداد مثل هذا:

    <ApplicationName />
    <Destination DestinationFileName=".\bin.obfuscated\MyProject.Form1.exe" />
    <Assemblies>
        <Assembly AssemblyName="MyProject.Form1, Culture=neutral, PublicKeyToken=omitted">
            <Merging>
                <ResourcesCompression Compress="0" />
                <MemberRefsProxy />
                <Pruning />
                <Obfuscation Obfuscate="1">
                  <Exclusions />
                </Obfuscation>
                <ControlFlow Obfuscate="1" />
            </Merging>
        </Assembly>
    </Assemblies>
    <Options>
      <Obfuscation FieldsNameMangling="2" NameMangling="1" />
      <ExceptionReporting />
      <FeatureUsageReporting Template="res:SmartUsageWithUIConsentFirstRun1033.dll" />
      <StrongNameSigning KeyFileName="PathToKeyFile" Sign="1" />
      <OtherProtections />
      <StringsEncoding />
      <OtherOptimizations />
      <Debugging />
    </Options>
هل كانت مفيدة؟

المحلول

أولا: فئة العامة لا يتم تجاهلها من قبل SmartAssembly في تطبيق مشروع (سيتم تجاهل في مشروع المكتبة).

ثانيا ، اسم المنشأة من النموذج الخاص بك هو مجموعة عقارات في وقت التشغيل.في حالتك الحالة ، قد يكون من تهيئة "Form1" في مكان ما في التعليمات البرمجية الخاصة بك, ربما في المصمم.

يمكن تغيير هذه القيمة في أي وقت ، على سبيل المثال :

public Form1()
{
    InitializeComponent();
    this.Name = "foo";
}

حتى SmartAssembly لا يمكن التعتيم على هذه القيمة ، فإنه سيكون من الخطأ و تغيير السلوك من التعليمات البرمجية الخاصة بك.

عندما SmartAssembly ويعتم التعليمات البرمجية الخاصة بك, فقط تغيير أسماء أنواع المجالات والأساليب.عندما الخاص بك في محاولة للحصول على اسم النوع ، فمن المنطقي للحصول على غموض اسم نوع.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top