Best method to obfuscate or secure .Net assemblies [closed]

I'm looking for a technique or tool which we can use to obfuscate or somehow secure our compiled c# code. The goal is not for user/data security but to hinder reverse engineering of some of the technology in our software.

This is not for use on the web, but for a desktop application.

So, do you know of any tools available to do this type of thing? (They need not be free)

What kind of performance implications do they have if any?

Does this have any negative side effects when using a debugger during development?

We log stack traces of problems in the field. How would obfuscation affect this?


This is a pretty good list of obfuscators from Visual Studio Marketplace Obfuscators

  • ArmDot
  • Crypto Obfuscator
  • Demeanor for .NET
  • DeployLX CodeVeil
  • Dotfuscator .NET Obfuscator
  • Semantic Designs: C# Source Code Obfuscator
  • Smartassembly
  • Spices.Net
  • Xenocode Postbuild 2006
  • .NET Reactor

I have not observed any performance issues when obfuscating my code. If your just sending text basted stack traces you might have a problem translating the method names.