This is an addin for Reflector that allows you to list all BizTalk artifacts contained in an assembly and extract them.

Installation

Donwload the attached file and extract Reflector.BizTalkDecompiler.dll into the same directory as Reflector (otherwise it won't work). Go to View|Add-Ins in Reflector, and Add Reflector.BizTalkDecompiler.dll.

Usage

Using File|Open..., add the BizTalk assembly you'll like to decompile to Reflector's assemblies list. Right click on the BizTalk assembly and select "BizTalk Server 2006 Artifacts".

You should see a list of all artifacts, with their type, name and namespace they were compiled into. Click the "Decompile..." button to decompile all selected artifacts into source files. You can select / de-select artifacts by using the selection check box on the right.

In the decompile dialog, specify the path to the directory where files should be created and press "Decompile". The decompile dialog is multi-threaded for a more responsive user interface.

Screenshot

Limitations

[Update June 19, 2006 - 10:00] This addin was compiled for the .NET Fraework 2.0 and Reflector 4.2 (and above). It will not work with the .NET Framework 1.1: you will get an error comparable to:

System.BadImageFormatException: The format of the file 'Reflector.BizTalkDecompiler.dll' is invalid.
File name: "Reflector.BizTalkDecompiler.dll"
   at System.Reflection.Assembly.nLoad(AssemblyName fileName, String codeBase, Boolean isStringized, Evidence assemblySecurity, Boolean throwOnFileNotFound, Assembly locationHint, StackCrawlMark& stackMark)
   at System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Boolean stringized, Evidence assemblySecurity, StackCrawlMark& stackMark)
   at System.Reflection.Assembly.LoadFrom(String assemblyFile, Evidence securityEvidence, Byte[] hashValue, AssemblyHashAlgorithm hashAlgorithm)
   at ᜧ.ᜀ(String A_0)

 I am currently investigating a port to .NET 1.1 but I do not promise I'll do it. The addin was designed for BizTalk Server 2006 which requires the .NET Framework 2.0 so you should have any problem.

Most BizTalk artifacts can be decompiled back to their original source form (Pipelines, Schemas). Some artifacts cannot be decompiled to their original source (Maps). When decompiling a map, the addin will export the XSLT which was generated by the compiler, not the actual .btm file.

[Update June 9, 2006 - 13:00] Recovering the full source of orchestrations is possible but invovles a manual step. After exporting, open the .odx file in the BizTalk Orchestration Designer (in Visual Studio) and save it without making any change. The editor will rebuild missing information which cannot be infered from the compiled assembly. Once this is done, the resulting .odx file should behave as if it was the source of the orchestration.

Feedback welcome!

[Update June 9, 2006 - 12:20] This tool is handy but I'd like to make sure everyone understands that is is offered "AS IS" with no warranty. I did not anticpate so much interest in the tool so I had to append this legal disclaimer.

This being said, if you found a bug, want a new feature or just want to say that you are using BizTalk decompiler and you love it, feel free to use the "Email" link above to drop me a note!