I recommend {smartassembly}. We have been using this now for quite a while and have had great results. Quoting their website, here are some features:
- Further secure your .NET application (Strings Encoding, Anti-disassembler & Anti-decompiler options, Strong Name signature...)
- Deploy your .NET application in one file (Dependencies Merging, Compression and Embedding)
- Remove all non-useful code and metadata (Pruning)
- Perform other code optimizations (Memory Management, Automatic Sealing of Classes...)
- And debug your obfuscated and deployed assembly (automatic unhandled exception reporting via 24x7x365 managed Web Service).