As other posters have suggested you could TRY using an obfuscation tool.
However, we've just spent a few days evaluating a lot of tools... and the
results are not good reading
There are areas where obfuscation cannot be easily used - reflection and
remoting (which uses reflection). Anything in a .NET langauge that you need
to refer to by source name is gonna fail as the obfuscator will (obviously)
obfuscate that. So, there can be quite a lot of manpower required to
selectively obfuscate, then this leads to designing your assemblies/classes
around obfuscation limitations which (personally speaking) is silly.
If you're a company doing a 'serious' product then the free obfuscator that
comes with VS.NET2003 isn't good at all. Yeah, it does obfuscate but have
you seen how easy it is to read the code afterwards? It's too easy - way too
easy. There was only one product we could recommend - Xenocode. This
produced the most unreadable code out of all the products tested. However,
using the 'correct' decompiler (i.e. not ILDASM) you can get very very close
to the code as it was originally conceived.
Microsoft really need to address code security seriously. Maybe something
like having a security certificate system to 'view code' or to 'run code' -
rambling thoughts as I was typing!!
Best of luck anyways!