當我混淆這種形式,而 「調試」 它SmartAssembly混淆大衆型
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中
全名:#YAB#朱
問題
爲什麼FullName
被混淆?
Form1
是公開的,所以我期望SmartAssembly忽略它。
額外的信息
Form1
是public partial
,所以是designer.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>
「partial」僅對編譯器有意義,對於所有部分(可以是也可以不在其自己的文件中),訪問修飾符必須相同。 –
我不同意。我在那裏看到了很多表單,其中部分類的Form1.designer.cs部分 - 儘管Form1.cs類是公共的,但是在那裏是私有的。 –
要麼你看錯了,要麼代碼無法用「Form1的部分聲明」具有衝突的可訪問性修飾符進行編譯「。 [「所有部分必須具有相同的可訪問性,例如公共,私人等。」](http://msdn.microsoft.com/library/wa80x488.aspx「部分類和方法(C#編程指南)」 ) –