.net code is intermidate language code, which is by nature "readable" or "decompilable" code. so like any script language you can use an obfuscator, see
http://en.wikipedia.org/wiki/List_of_obfuscators_for_.NET[
^] to protect you intellectual property. And, or in addition, you can use a kind of wrappers to "load" your .net application like a packer (search for .netshrink wich allows you password protection), tool referred to as packer, like UPX(Ultimate Packer for eXecutables - a popular one) and RPX, MPRESS and .NETZ (seem to be for .net executables). But, you should be aware of, that il-code is still "readable" from memory, once these packers have loaded it into memory! So for code, containing credentials for 3rd party apis like passwords and stuff, sadly .net is no secure solution. For credentials not stored in the executable itself, but entered on e.g. fist start or install, the there are some options to store sensitive data or use the crypto api to encrypt/ decrypt LICENCE KEYS or verify STORED CREDENTIALS (e.g. search for Isolated Storage, ProtectedMemory, Data Protection API). Don't put sensitive data in your code! have fun.