The thing is that if somebody really wants to crack your app s/he always can. Look at how fast games and software get cracked - even if they are compiled down to native. Crackers just don't care, they analyze the assembly code and fix
Cracking games for piracy is one thing, it just means unauthorised distributions can be made.
That's different to disassembly where the consequences are much worse: commercial rivals can use your source to build a competing product with zero development expenses, then sell it for profit.
By the time you get round to suing them for copyright infringement or other offenses they can change the source enough.
....okay, that's definately a worst-case scenario, but you get the point. Unlike simple piracy, where pretending the problem doesn't exist works, you cannot ignore Grand IP Theft like this.
With problems like this, I think the best way forward for massivly distributed programs written in .NET is GPL licensing, that way you retain control and with licensing quirks get to charge your customers good money anyway. Look at how MySQL is licensed for