{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 a small update in version 1.1, 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.
- 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.
- 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 single dialog box 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,
though if you prefer to be able to tweak the process it 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.
Version 1.1 fixes several bugs and offers some additional functionality in the exception
reporting area. You can now display the exception reporting UI in French or German,
or have exception reports shipped up to the server automatically without any user
interaction. Exception reports also contain much richer information including the
name and value of every field of every object in the stack trace, plus information
on the operating system and service pack level.
You can download a 20-day evaluation version from the company's Web site. In
addition to the Professional Edition, there's a $399 Standard Edition that does
not include the exception reporting and stack trace decryption features of the
Professional Edition. With Version 1.1, the company has also added a $799 Enterprise Edition
that lets you customize the exception reporting process through an included SDK.
With the SDK, you can change the exception reporting UI to match your own corporate
or application-specific look, as well as customize the information that gets collected
and reported.