It's no secret that .Net applications place a large burden on the developers to protect their intellectual property. You may as well ship the sourcecode along with your product as it is no more secure in its compiled state. As you can imagine, if your software employs some sort of registration routine or try-before-you-buy functionality, your security routines are useless if code is made available. There are only a few solutions available.
One option is to obfuscate your code using one of the many available obfuscators. Obfuscation adds a layer of security by renaming/reorganizing your code to make it harder to read. It's still there, in all its glory, just a little more difficult to understand. AdeptProtector is more than obfuscation. Your AdeptProtected code is locked behind industry-standard encryption, it simply isn't even available to be decompiled.