I have recently found out that BizTalk Server 2010 has a bug in its Custom Extension XML caller. This BTS feature enables you to reference an external assemble using a XML file, usually called ExternalAssembly.xml in wich you define a DLL (Needs to be in GAC) to be used by the BizTalk Mapper. An example of such file is the following:
Once you define this as you Custom Extension XML in you BizTalk Map, you are able to call your methods defined in the class you referenced above, in this case “ChangeDoubleFormat”. This, until BizTalk Server 2009 was working perfectly, however a bug in this feature doesn´t create the reference in your BizTalk Map as it should. The next picture shows you what should be inserted in the .btm file refences.
This is just a snipped of the whole .btm file, but as you can see, the marked line: <CustomXSLT XsltPath=” ExtObjXmlPath=’C:\Development\Projects\BTS_Call_CS_XSLT\BTS_Call_CS_XSLT\ExternalAssembly.xml’ />, is the one that BizTalk should insert automativally in your map once you define that you want to use a custom extension xml file. As I sad this worked until BizTalk Server 2009 but no longer works in BizTalk Server 2010.
Since I noticed that this error was occuring, I made a personal Fixer that could help me with this process, instead of opening the btm file, search for the right place to put the reference and than right it, I just need to select the .btm file I want to change and the ExternalAssembly.xml file as well. Now I just click Fix, and the fixer does the job for me.
As I have been seeing lots of people reporting the problem in Google and saying that they have to make the changes manually, I decided to share my own project and hope that it will help you with this BizTalk Server 2010 bug.
Here is the link for for you to Download the project: http://code.msdn.microsoft.com/Fixer-for-Custom-Extension-ea973a25#content