Follow @RoyOsherove on Twitter

Review: {SmartAssembly}- Assembly Improvement and Protection Tool

I'm very happy to introduce {SmartAssembly} as part of my official blog's "Ads I stand Behind" advertising. I chose to advertise {SmartAssembly} after taking a long look at the application, and realizing that it is indeed something I would find good use for in my real day to day work.
In short, {SmartAssembly} is an Assembly "improvement" tool, to be used after you've created your project and your app is ready to be deployed. It's very slick and easy to use UI allows doing many useful things to the assembly such as merging all of its dependencies into one file, removing code that is not used, obfuscate the code and even wrapping your application with a global exception handler.
In short, it's a easy click-through product that allows making your app safer and even run quicker and be more easily deployed, with the ease of use of a mouse.
Setting Options  Very easy and simple to manipulate UI
My favorite feature thus far is the global exception handler (I love all the rest, but this feature really blew me away personally) - it instruments your code and handles any non-handled exceptions with a nice dialog (aimed at developers, not customers) that allows you to actually see the current stack trace, see the value of each parameter to the current function and really, determine very easily where the problem may lie in most cases.
Good Stack trace and exception handling abilities: This is an un-handled exception that was automatically handled by SmartAssembly. Priceless for when your QA department has a problem with your application..
Here's the "official" feature list from the site:

Key Features

Merges your Application dependencies with your main Assembly.
Automatically Detects and Removes the non-useful code and metadata.
{smartassembly} is a smart Obfuscator, which automatically detects which code can or can't be obfuscated. {smartassembly} also encodes the strings in order to improve protection.
The combination of the previous features leads to an improvement of your Application’s performances.
Exception Reporting Web Service
Exception Reporting Web Service
Automatically adds missing exceptions handling, and Reports these exceptions with detailed snapshot information to the developer.
One-stop Improvement and Protection tool in one single post-compilation process.
Notice number 5 there. That's a feature you get automatically which you can use to figure out what problems your users are dealing with the most with your app. Priceless.
I did find some cons in the application, but nothing too serious so that it would prevent me from using it:
  • The setup requires .NET 1.1, since it specifically uses some classes there that broke in .NET 2.0, so if you don't have .NET 2.0, you'll have to download that and install it before it sets up.
  • If your application uses a plugin mechanism, where you load other "plugin" assemblies at runtime, you'll need to do a little more work if you want your application *and* your plugin assemblies to be merged with their respective dependencies. You'll need to "merge" each of them (that is "MyApp" and "MyPlugin" separately with their (shared) dependencies - usually some third dll that holds the various interfaces -so that dll ends up merged two times - to the main application and to plugin which uses it as well. If only they had the UI to say "this dll is a shared dependency between this library and my main project" things would be simpler. Again - not a big reason to not use this, just a little thing to know if your app loads stuff with Reflection.
  • There are some small and insignificant "spelling" errors in the main UI('Reflexion' instead of 'Reflection') - growing pains probably.
Final Mark:
Overall, I'd give {SmartAssembly} a 7.5 out of 10 (for lack of support of pluggable apps handling, which for me is quite relevant and should be for many apps out there). The ease of use, the power and the overall feature set combine to give a very nice and simple product that anyone could find useful for public applications. It's the only product out there that has all this in an easy UI, and I don't see any other product doing a better job right now.

Note: This is a paid (and honest) review of the product which is also being advertised on's main page. If you think your product is good enough to be up here as well, see this link.

Misc. Links and odd ends

Can you recommend a good Exchange Hosting service?