Recently, there has been much debate over open source software. But what most
developers overlook is that even though they don't release their source, it
may still be available. In the general scheme of things, there is always
someone out there who will, by some means, be able to regenerate your code if
they so desire. Whether it is by analyzing how your application works and
replicating its behavior, or by reverse engineering with a tool, it will
always be possible for someone to produce the same output with an appropriate
amount of time in which to do it.
With .NET, assemblies compile to an Intermediate Language (IL), which allows
them to be executed on any system supporting Microsoft's Common Language
Runtime (CLR). There are many benefits to this solution that are outside the
scope of this article, but a major drawback is the extent to which your code
is compil... (more)