如何仅使用 Dotfuscator 混淆方法名称?

How to only obfuscate method name with Dotfuscator?

由于某些反射操作,我需要从 Dotfuscator ce 混淆中排除一些方法:

[Obfuscation(Exclude = true)]
internal MyMethod (String input1)
{
   string member1 = "hello"
   string member2 = "world"
   [...]
}

Obfuscation 属性完成这项工作,但现在该方法的完整内容也不再被混淆。我如何才能实现名称 MyMethod 不会被混淆,但成员 member1member2 等仍然被混淆?

(注意:我在 Dotfuscator 团队工作,并以该身份回答问题。)

局部变量的名称(您称为 "members")与其他调试信息一起存储在程序数据库 (.pdb) 文件中,而不是程序集 (.dll.exe 文件)。 Dotfuscator 重命名程序集中的代码项,但不重命名 .pdb.

中的局部变量

我们假设关注逆向工程的客户不会发布 .pdb,因为它包含行号和源文件信息,这将使逆向工程过程变得容易,即使使用混淆程序集也是如此.

但是,Dotfuscator 仍然可以生成 .pdb 文件用于内部测试和调试。 如果您希望 Dotfuscator Community(以前称为 Dotfuscator CE)停止这样做,请在 Dotfuscator 的用户界面中打开您的配置文件,转到 Settings -> General 并取消选中 发出调试符号