I use RemoteSoft Protector. So far it is very good.
It does not only obfuscate the code but it also compiles it into native code.
They have created a compiler of .NET.
So there is no MSIL at all and you cannot even theoretically see the MSIL code.
Also it encrypts the native code.
When you put the assembly in a decompiler the only code you get is the function name
and a return Nothing. That's all .
Let's not forget that Salamander is US$1900, which is a bit out of reach for many. It also breaks any link that your app has to the Framework so you lose any advantages that managed code provides. It's a possible solution, although not a panacea and not cheap.