Assemblies compiled by the .NET framework contain rich metadata exposing information
about types, methods, field, properties and managed resources in the compiled assembly.
Using a .NET disassembler it's possible to retrieve the original source code from
compiled assemblies. This poses a security threat since intellectual property of
a company embedded into software code can be easily exposed.
The goal of symbol renaming is to prevent unauthorized users from reading your source
code and reverse-engineer your assemblies. Symbol renaming makes code harder to
understand, by changing the names of types, methods and fields so that they lose
their semantic meaning.
Applying symbol renaming hides the code intent but code remains usable for the just-in-time
compiler to execute intended operations.
To enable symbol renaming:
Printable Chars | Renames classes and methods using ASCII characters. Error reports received from customers can be translated back to their original form using the decode stack trace form. |
Unprintable Chars | Renames classes and methods using Unicode unprintable characters. Note that since it's not possible to display unprintable characters error reports received from customers containing stack trace information can't be decoded back to their original form. |
In case you're deploying a patch release consisting of only a subset of the assemblies comprising the entire software you should consider using an obfuscation map created for a previous release. Agile.net will use the obfuscation map to rename classes and methods using the same names used for a previous run. To instruct Agile.net to do so simply browse to the location of the obfuscation map and select it.
By default Agile.net doesn't obfuscate public members of selected assemblies, otherwise assemblies couldn't be referenced by other assemblies that are not included in the renaming process. If you don't expect your software to be used as a library referenced by external components you should consider using cross assembly obfuscation. To enable cross assembly obfuscation check the checkbox named 'I want to hide public members of my code using cross assembly obfuscation'.
Symbol renaming can sometime introduce unexpected errors, mostly due to usage of reflection API in your code or by libraries referenced by your software. Agile.net applies smart obfuscation rules to automatically detect such classes and methods and excludes them from the renaming process. For those cases where Agile.net couldn't identify a dependency that may lead to an error you can specify your own exclusions. To specify additional exclusions click the hyperlink named 'I want to specifically exclude members from the obfuscation'.