One of the things I always do when I start a new C# project is turn on Code Analysis for the project and set all of the rules to return errors rather than warnings. This might seem rather draconian but once you get used to the rules it's fairly straightforward...
One of the tools I have used extensively for a number of years is Wise Owl's Demeanor obfuscator. I did quite a bit of research on available obfuscators some time back and settled on Demeanor as it offered the best balance of features, performance, flexibility...