There's no simple, or at least inexpensive, way to prevent a .NET app from being decompiled. Generally speaking people don't worry about decompilation and, if they want to protect their source code, they obfuscate it so that the decompiled code is no use to anyone because its purpose can't be understood. Java is in a similar position and there are lots of obfuscators available. .NET has fewer options, but there are some. Dotfuscator CE comes with VS (Pro and above I think). There's a commercial version that's more secure but also costs quite a bit. There are also some other free options if you'd care to search.