Shared custom functoid in TFS

Topics: Server Deployment
Jun 6, 2013 at 6:13 PM
I'm trying to help someone build a solution that uses a shared custom functoid from a different solution. To build this in TFS, do I need to add the functoid project to the build workspace and path the CustomFunctoids ItemGroup appropriately, or does BTDF look for the dll in
C:\Program Files (x86)\Microsoft BizTalk Server 2010\Developer Tools\Mapper Extensions? Or is it something else I'm not thinking of?

Also, when deploying the application, does BTDF copy the dll to the Mapper Extensions folder and GAC it?

Jun 7, 2013 at 6:30 AM
Edited Jun 7, 2013 at 6:30 AM
The Deployment Framework treats a custom functoid assembly the same as all other artifacts -- it is normally local to the solution and the ItemGroup format is the same as Schemas, Orchestrations, etc. If you map the shared source directory into the workspace alongside the solution you might be able to make it work, but you would need to do a similar mapping for the local TFS workspace to keep things consistent. Common/shared components are generally deployed via a "Common/Shared" solution to a separate BizTalk app which consumers reference.

During deployment the functoid assemblies are copied to Mapper Extensions and GAC'd.

Jul 16, 2013 at 7:52 PM
I'm still struggling with this problem in TFS. The build always fails when building the map with an error saying that it can't find the dll in "C:\Program Files (x86)\Microsoft BizTalk Server 2010\Developer Tools\Mapper Extensions". Does the functoid dll have to be "deployed" to the TFS build server? The path in the custom functoid item group doesn't appear to have any effect on this.
Jul 16, 2013 at 8:32 PM
I assume that the map project has a reference to the custom functoids DLL or to the custom functoids project. Is that reference set to Copy Local true or false? If false, try setting it to true. It seems like the map build should be satisfied if it can find the dll in the local bin directory during the build. You can probably test it on your dev machine if you just delete the functoids dll from the Mapper Extensions directory then rebuild.

Jul 17, 2013 at 6:26 PM
I misread the error, in TFS it is actually looking in "C:\Program Files (x86)\Microsoft BizTalk Server 2013\Developer Tools\Mapper Extensions". The build server only has the 2010 build components and BTDF 5.0 installed. The developer who created the solution did have BTDF 5.1 installed for a while, but has now gone back to 5.0. Where is that 2013 path found? Is it in a file that can be edited, or replaced with a 5.0 version?

The developer was able to build locally after removing the functoid dll from the Mapper Extensions folder.
Jul 17, 2013 at 6:38 PM
If this error is happening during a build of a BizTalk .btproj project, could you have a hard-coded path in a file or project reference inside that .btproj file?

During a BTDF deployment -- which shouldn't apply here because you're doing a solution build -- the Mapper Extensions path comes from HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\BizTalk Server\3.0\InstallPath.

Jul 18, 2013 at 7:52 PM
It turns out a new 2013 build server had gone live and we didn't know it. The build was defaulting to that server instead of the 2010 build server. Everything is working now. Thanks for your help.