I've been working on a few BizTalk projects lately and been making use of Scott Colestock's Deployment Framework for BizTalk 2006. The framework is great and handles about 95% of what I need to do with a BizTalk project's build script. One of the things that I wanted to do was to create a reference to another BizTalk application from the BizTalk application that I was deploying. The reason was that the first application had some shared components (pipelines, schemas, orchestrations) that I wanted to use in the second application. However, I couldn't find a way to do this using either BTSTask or Scott's framework.
I ended up extending Scott's framework by adding another Nant task to the project. You can download my reference adding task here. It took me about 10 minutes to create since I just used one of Scott's classes as a starting point and changed the functionality. In order to actually add the task to the build I added a property to the BizTalkDeploymentInclude.nant file:
<property name="referencedApps" value="" />
And then in the deployAppDefintion task I added the following highlighted code:
<target name="deployAppDefinition" description="Create BizTalk 2006 application definition"
depends="undeployAppDefinition">
<exec program="BTSTask.exe" .... >
<foreach item="String" in="${referencedApps}" delim="," property="refApp">
<btsappreference referencedApp="${refApp}" application="${project::get-name()}"/>
</foreach>
</target>
The btsappreference is my new custom task. Now in the project's build file you would just override the value of the referencedApps property with the comma delimited list of apps to reference and the references will be created for you.
Technorati Tags: BizTalk, Nant