---
title: "Review: {SmartAssembly}- Assembly Improvement and Protection Tool"
url: "https://osherove.com/blog/2006/4/30/review-smartassembly-assembly-improvement-and-protection-too.md"
canonical: "https://osherove.com/blog/2006/4/30/review-smartassembly-assembly-improvement-and-protection-too.html"
published: "2006-04-30T00:52:00"
updated: "2006-04-30T00:52:00"
tags: ["Product Reviews"]
author: "Roy Osherove"
description: "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…"
usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)."
license: "https://creativecommons.org/licenses/by/4.0/"
---

# Review: \{SmartAssembly\}- Assembly Improvement and Protection Tool

By Roy Osherove April 30, 2006 In [Product Reviews](https://osherove.com/blog/category/product-reviews)

**Historical article** · Originally published April 30, 2006; technical details may be outdated.

I'm very happy to introduce [{SmartAssembly}](http://www.smartassembly.com/) as part of my official blog's "[Ads I stand Behind](http://weblogs.asp.net/rosherove/archive/2006/04/23/AdvertiseOnThisBlog.aspx)" 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](https://osherove.com/img/wb/126531fb_www.smartassembly.com_images_screenshot03small.png)](http://www.smartassembly.com/product/showscreenshot.aspx?image=screenshot03.png&title=Setting%20Options)  _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

<table id="Table2"><tbody><tr><td><img alt="Merging" decoding="async" loading="lazy" src="https://osherove.com/img/wb/de7ef01e_www.smartassembly.com_images_1.png">&nbsp;</td><td><h5>Merging</h5><h6>Merges your Application dependencies with your main Assembly.</h6></td></tr><tr><td><img alt="Pruning" decoding="async" loading="lazy" src="https://osherove.com/img/wb/267a5631_www.smartassembly.com_images_2.png"></td><td><h5>Pruning</h5><h6>Automatically Detects and Removes the non-useful code and metadata.</h6></td></tr><tr><td><img alt="Protection" decoding="async" loading="lazy" src="https://osherove.com/img/wb/8baeac00_www.smartassembly.com_images_3.png"></td><td><h5>Protection</h5><h6>{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.</h6></td></tr><tr><td><img alt="Optimization" decoding="async" loading="lazy" src="https://osherove.com/img/wb/2f781f70_www.smartassembly.com_images_4.png"></td><td><h5>Optimization</h5><h6>The combination of the previous features leads to an improvement of your Application’s performances.</h6></td></tr><tr><td><img alt="Exception Reporting Web Service" decoding="async" loading="lazy" src="https://osherove.com/img/wb/b4afd1ff_www.smartassembly.com_images_5.png"></td><td><h5>Exception Reporting Web Service</h5><h6>Automatically adds missing exceptions handling, and Reports these exceptions with detailed snapshot information to the developer.</h6></td></tr><tr><td><img alt="All" decoding="async" loading="lazy" src="https://osherove.com/img/wb/90b99085_www.smartassembly.com_images_6.png"></td><td><h5>All-in-one</h5><h6>One-stop Improvement and Protection tool in one single post-compilation process.</h6></td></tr></tbody></table>

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.

**Cons**

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}](http://www.smartassembly.com/) 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 ISerializable.com's main page. If you think your product is good enough to be up here as well,_ [_see this link_](http://weblogs.asp.net/rosherove/archive/2006/04/23/AdvertiseOnThisBlog.aspx)_._

## More in Product Reviews

[All posts in Product Reviews](https://osherove.com/blog/category/product-reviews)

- May 29, 2006

    ### [Review: Shell MegaPack - Windows Explorer GUI Replacement Controls](https://osherove.com/blog/2006/5/29/review-shell-megapack-windows-explorer-gui-replacement-contr.html)

- May 22, 2006

    ### [Review - Automise: Automise almost anything](https://osherove.com/blog/2006/5/22/review-automise-automise-almost-anything.html)

- Jan 15, 2006

    ### [Cheat Sheets for ASP.NET and Browsers \[The Browser Book\]](https://osherove.com/blog/2006/1/15/cheat-sheets-for-aspnet-and-browsers-the-browser-book.html)

- Jan 15, 2006

    ### [HanselMinutia](https://osherove.com/blog/2006/1/15/hanselminutia.html)


---

## About the author

**Roy Osherove**: Senior Solutions Architect at AWS working on AI for production and AI-driven development; author of The Art of Unit Testing and Elastic Leadership, with about 20 years of consulting and training on unit testing, TDD, team leadership and continuous delivery.

### Sites

- [RobotPaper](https://robotpaper.ai/): This blog: AI patterns and anti-patterns, AI and coding agents, and engineering leadership.
- [osherove.com](https://osherove.com): Roy's personal site. Author of The Art of Unit Testing and Elastic Leadership; consulting and training on unit testing, TDD, team leadership and continuous delivery, plus about 20 years of blog posts.
- [The Art of Unit Testing](https://www.artofunittesting.com): The Art of Unit Testing, 3rd Edition (Manning): readable, maintainable, trustworthy unit tests, plus TDD workshops in C#, JavaScript, Java and Kotlin.
- [5whys.com](https://www.5whys.com): Roy's writing on software team leadership: self-organizing teams, surviving chaos, learning mode and the Elastic Leadership model.
- [Pipeline Driven](https://pipelinedriven.org): Continuous delivery and DevOps practices: build patterns, pipeline-friendly testing, DevOps metrics and enterprise DevOps.
- [Elastic Leadership](https://www.elasticleadership.com): Elastic Leadership, Roy's framework for software team leaders (survival, learning and self-organizing modes).

### Social

- X: https://x.com/royosherove
- LinkedIn: https://www.linkedin.com/in/osherove/

### Contact

- Contact form: https://forms.gle/jQSx5KoXvrVA1JCK7

### License

Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page). License: https://creativecommons.org/licenses/by/4.0/
