Is VB.NET a compiled language? Can I keep my code from the user?
.NET languages compile down to a form called Intermediate Language (IL). This is a byte code representation of your code. That IL is picked up and Just in Time (JIT) compiled to native code before executing. That's a big part of the reason that .NET runs reasonably well.
The issue that Jack is really asking about is that he's heard that you can easily reverse engineer the code from the IL. In fact, that's the case. Even more scary to some is that a freeware decompiler called Anakrino will look at your .NET binary and take it right back to C# code.
Before you run away screaming from .NET, keep in mind that Java has the exact same problems. In fact, there used to be a commercial decompiler for Java from Alpa Technologies that was simply amazing. Interestingly, most people didn't buy it because they wanted to reverse engineer things. The main reason was that it produced much better Java code than most of your coworkers, so folks would run their coworkers stuff through it. Seriously, the fact you can easily reverse engineer Java didn't make a lick of difference in its acceptance.
Many people are curious why environments like Java and .NET are so easy to reverse engineer. It's all related to convenience. If you want ease of use features like garbage collection and truly self-describing objects, a lot more information has to be put in the binary to make those happen. That same information that makes .NET and Java easy to develop means it is easier to figure out the code.
In the big scheme of things, it doesn't matter. There are code obfuscators out there, with Demeanor from Wise Owl being the best in the business. There's no way after running your code through Demeanor you'll have anyone reverse engineering it. Of course, since these obfuscators move around the code, it means you won't be able to do source-level debugging after the code is obfuscated.
The other reason it doesn't matter is that you have plenty of legal protections in the U.S.
(check for your particular country) for Intellectual Property (IP). If a competitor releases a
product that looks and feels like yours, simply look at its code. If your algorithms are in there
verbatim, you can take legal action through the courts.
This was first published in June 2003