Prevent .NET DLL to be decompiled
By design phase .NET embeds rich Metadata inside the executable code using the MSIL. Anyone can easily decompile DLL back using tools such as ILDASM (owned by Microsoft) or Reflector for .NET which is a third party. Secondly there are so many third party tools which make this decompiling a click away. So any one can easily look into the assemblies and reverse engineer them back to actual source code and understand some real good logic which can make it easy to crack application.
The process by which we can stop this reverse engineering is using "obfuscation". It's a method which will foil the decompilers. There are so third parties (XenoCode, Demeanor for .NET) which provide .NET obfuscation solution. Microsoft includes Dotfuscator Community Edition with Visual Studio.NET.