This application has been on blog for a while, and I'm happy to have got lots of feed-back. Apparently, I'm not the only one finding uninstalling/re-installing BizTalk assemblies to be challenging. You have to know the order of references between every assembly, along with ports that might be using the assembly you want to uninstall. If you have worked with BizTalk for a while, – I'm pretty sure you have sworn over this dialog in the past:


The BizTalk Undeploy Helper is an application I built for a customer, where they often deploy and undeploy large solutions. This might not an big issue when deploying from Visual Studio to your build environment. But this is seldom (at least in my experience) the procedure when deploying to an production environment. The recommended way is to add the binding files to your BizTalk Application resources before exporting the MSI package, and then set the Target Environment. If you then undeploy using the Add/Remove Programs, the assemblies and ports should be removed in the right order. However, I haven't found this to work that well when deploying multiple solutions to the same application(s), and that's pretty much why I developed this application. This is all very well described in a post by Stephen W. Thomas

Using this tool is pretty straight forward. First, select the assemblies to undeploy. By selecting one assembly, the tool marks all assemblies referencing the one you selected. You may also use the new feature of marking all unused assemblies. This might come in handy if you are updating the assembly version each time you deploy. –Use this option with caution. It's virtually impossible to determine if an assembly is used or not, so carefully examine the result before you undeploy.


Before you choose to undeploy, you'll be given a list of all assemblies and BizTalk artifacts related to those assemblies. You have the option to leave the ports, in which case the ports will be reconfigured to use passthrough pipelines and no in- or outbound transformations.

If you are working with a big solution, with assemblies deployed to multiple applications, you can save the uninstall configuration for later use. This way you don't have to reselect the assemblies the next time you undeploy. Just click the load button, and point to the configuration file.


If you choose not to run the application on the server, make sure the assemblies you're about to uninstall are deployed to the computer from which you're running the application. This is because the application needs to access the assemblies to get its dependencies.

Find it at CodePlex