Derek, if it's early days with NET then take the time to investigate declarative obfuscation options. There are good reasons *not* to obfuscate everything- e.g. if you want to use reflection. This is something you'd want to design in from the start IMHO. Also, check out some of the newer obfuscators that encrypt/compress. I understand that some of them build twists into the compression that add an extra layer of complexity.
The reality is that "protection" is simply about making decomilation not worthwhile. The "community" obfuscator will send away casual hackers; the professional encrypting/twisting versions impose a cost of tens or hundreds of thousands of $ to pick things apart, which is enough for many apps. IMHO. ;-)
"... They ne'er cared for us
yet: suffer us to famish, and their store-houses
crammed with grain; make edicts for usury, to
support usurers; repeal daily any wholesome act
established against the rich, and provide more
piercing statutes daily, to chain up and restrain
the poor. If the wars eat us not up, they will; and
there's all the love they bear us."
-- Shakespeare: Coriolanus, Act 1, scene 1