
This is the Title of the Book, eMatter Edition
Copyright © 2007 O’Reilly & Associates, Inc. All rights reserved.
Providing Guidance to Obfuscators
|
781
13.12 Providing Guidance to Obfuscators
Problem
You need to configure Dotfuscator (or another type of compatible obfuscator utility)
to operate independently on a number of assemblies, but you do not want to manu-
ally have to create a configuration file for each unique assembly configuration.
Solution
Use the ObfuscateAssembly and/or Obfuscation attributes in the System.Reflection
namespace. The ObfuscateAssembly attribute can be used to indicate how to obfus-
cate the entire assembly:
[assembly: ObfuscateAssembly(true)]
Use the Obfuscation attribute on an assembly, on a type, or on the members of a type
to gain a fine-grained control over what is obfuscated and what is not:
// Obfuscate this class and all of its members.
[Obfuscation(ApplyToMembers = true, Exclude = false)]
public class ObfuscatedCls( ) {...}
You can use this attribute at the assembly level, but you lose the ability to indicate
whether or not this assembly is public or private, which affects how the obfuscator
will handle the types and members of those types in the assembly. It is better to use
the
ObfuscateAssembly attribute at the assembly level and indicate whether or not this
is a public or private assembly in its constructor. The
Obfuscation attribute can then
be used to tweak