Or, how protect .NET code from reverse engineering?
.NET languages are compiled into Intermediate Language (IL). IL is easily decompiled back into a .NET language. Therefore, many developers worry about the possible theft of their intellectual property (IP) in the form of a .NET assembly. To guard against decompilation, many developers resort to obfuscation. Obfuscators work by scrambling the IL code around into an “unnatural” form—an inefficient and unreadable form which would not be produced by a .NET compiler. Heavily obfuscated code may incur a severe performance penalty. Obfuscators may also introduce subtle or not so subtle bugs into the application. While obfuscation may help deter amateur decompilers, professional IP thieves will only be slowed down. .NET decompilers are designed to read an executable file—e.g. .NET .exe or .dll file—and create a source file which can be read, edited, and compiled. There are free obfuscators available.