{smartassembly} is an "assembly improvement and protection tool" that is
designed to help you move painlessly through a whole bunch of release-time tasks
for your .NET code. It works on .NET 1.0, 1.1, and 2.0 applications, and
depending on what process you're already using, it's simple step-by-step
interface could replace or augment several tools. I looked at version 1.0 when it was released; now they're
out with version 2.0, so I've updated this review to match. Here's an overview of what {smartassembly}
can do for you:
- Merge dependencies with the main assembly, which cuts your deployment
file list down, speeds up load time, and avoids any future versioning
issues.
- Scan your code to prune out dead and unused code. You can override this
to preserve methods that you know are being called by reflection.
- Obfuscate the code (you can override this on a method-by-method basis).
The obfuscation uses nonprintable characters to rename types and lacks the
customizability of high-end obfuscators but it's certainly a good start.
- Munge the metadata in the code to make it more difficult for dissasemblers to reverse-engineer
it.
- Encode embedded strings to protect them from simple hex-dumping of the
resulting assembly.
- Add code to intercept unhandled exceptions and transmit them back via a
hosted Web Service with summary reports. You get a one year subscription to
the service as part of the purchase price.
- Optimize memory use in the assembly.
- Seal all possible classes in the assembly.
- Strong name the assembly, generating a new key if necessary.
The whole process is as easy as filling out a set of options in an attractive wizard-like
interface and then
clicking "Build." I ran a couple of assemblies through a test copy, and didn't
have any problems with the stuff that came out the other end; the resulting
assemblies appear to have all the functionality of the originals, and have
shrunk considerably in size (though frankly I don't worry all that much about
compiled code size in these days of gazillion byte hard drives). {smartassembly}
lives up to the promise of offering a simple way to clean up your assemblies. You
can tweak the process a bit if you're using the Professional or Enterprise versions,
which offer declarative obfuscation and pruning through attributes. For the most
part, though, if you prefer to be able to tweak every step of the process this isn't the utility for
you; there aren't a lot of options to set or detailed help files to read.
Rather, the developers here have tried to decide what's best, provided simple
explanations on the user interface, and left it at that.
In addition to declarative obfuscation and pruning, version 2.0 adds new memory
management and anti-decompiler features, more information on exception reports,
an easier to follow user interface, and support for Windows Vista and .NET 3.0.
With the Enterprise Edition (starting with version 1.1), you can customize the exception
reporting forms and get access to the exception reports database directly via SQL
queries.
You can download a 20-day evaluation version from the company's Web site. In
addition to the Enterprise Edition and the $599 Professional Edition, there's a $399 Standard Edition that does
not include the exception reporting and stack trace decryption features. Overall, this is a nice utility for the tail end of your development cycle
that keeps adding well thought out new features in each new release.
Click for larger screenshot