BTDF Support for BizTalk 2016

Topics: General Questions
May 20, 2016 at 3:37 PM
Is there any timeline for when BTDF will support BizTalk 2016? We're starting a project soon based on the CTP. Will there be a beta version based on it available?

If not, is there any chance the current version of BTDF might work with 2016?
-Sam Amin
Jul 22, 2016 at 10:06 AM

Hello again

I got it working with CTP, but it’s flakey with CTP2.

I found there are other references to the BizTalk version in the generated BizTalkDeploymentFramework.Targets file. Does anyone know the locations that would need to be modified to cover all BizTalk version checks?



Sep 20, 2016 at 7:27 AM
I trying to use BTDF with BizTalk 2016 and Visual Studio 2015, but after installing newest version of BTDF, there is no BTFD template in visual studio.
Does anyone know how I can use BT2016 and VS 2015 with BTDF 6.0 Beta?

Nov 1, 2016 at 3:06 PM
Edited Nov 1, 2016 at 3:07 PM
I was asked to describe the changes I had to make. I'll try to list them briefly.

1) Use a custom wxs file, which is a copy of \Deployment Framework for BizTalk 5.6\Developer\GenericBizTalkMSI.wxs with the following changes.
  <SetProperty Id="MSBUILDPATH" Action="SetMSBUILDPATH2010" Value="[NETFRAMEWORK40FULLINSTALLROOTDIR]\MSBuild.exe" Sequence="both" After="CostFinalize">
      <![CDATA[BTS_PRODUCTNAME = "Microsoft BizTalk Server 2010" OR BTS_PRODUCTNAME = "Microsoft BizTalk Server 2013" OR BTS_PRODUCTNAME = "Microsoft BizTalk Server 2013 R2" OR BTS_PRODUCTNAME = "Microsoft BizTalk Server 2016"]]>
    <SetProperty Id="MSBUILDTOOLSVER" Action="SetMSBUILDTOOLSVER2010" Value="/tv:4.0" Sequence="both" After="SetMSBUILDPATH2010">
      <![CDATA[BTS_PRODUCTNAME = "Microsoft BizTalk Server 2010" OR BTS_PRODUCTNAME = "Microsoft BizTalk Server 2013" OR BTS_PRODUCTNAME = "Microsoft BizTalk Server 2013 R2" OR BTS_PRODUCTNAME = "Microsoft BizTalk Server 2016"]]>
The modified wxs file, should be renamed, and added to the project, in the btdf folder.
Then the btdf project file, should be modified to refer to the custom file by adding the following line, to the first PropertyGroup.
<!-- Use the custom WXS file which enables BizTalk 2016-->
2) The following tools were all rebuilt using .Net 4.6, and targeting the 2016 version of the SSO Client dll.
• SSOSettingsEditor.exe
• SSOSettingsFileImport.exe
• SSOSettingsFileReader.dll
The new files , need to replace the ones originally installed with BTDF 5.6, in the following folder: C:\Program Files (x86)\Deployment Framework for BizTalk 5.6\Framework\DeployTools
SSOSettingsFileReader.dll should also be added to the Global Assembly Cache (GAC).

3) For some reason, when installing BTDF on a machine with BizTalk 2016, it gets the version of gacutil wrong, so it copies the 2.0 version to the DeployTools folder, and also does not copy it’s dependencies as they are unneeded.
The solution is to copy the 4.0 version of the following 3 files into the DeployTools folder of BTDF.
• Gacutil.exe
• Gacutil.exe.config
• Gacutlrc.dll

4) Any files that should be added to the Global Assembly Cache during the BTDF installation, seem to not be added, due to the issue discussed above. For that reason, the following two files need to be added to the GAC manually.
• log4net.dll
• log4net.Ext.Serializable.dll

5) the VS Addin won't work, so you have to build and do all BTDF actions using the command line. All explained in the documentation.
Nov 9, 2016 at 4:36 PM
Hi Sam, Came in here to post the steps, which I did to fix it, I see, you have inserted it eloquently,

Adding to 5th point of Sam, Below are the deployment scripts for your convenience,
Quick Deploy
MSBuild.exe <btdfproj file path> /nologo /p:Configuration=Debug /t:UpdateOrchestration
MSBuild.exe <btdfproj file path> /nologo /p:Configuration=Release /t:UpdateOrchestration

Update SSO
MSBuild.exe <btdfproj file path> /nologo /p:Configuration=Debug /t:DeploySSO
MSBuild.exe <btdfproj file path> /nologo /p:Configuration=Release /t:DeploySSO

Preprocess Bindings
MSBuild.exe <btdfproj file path> /nologo /p:Configuration=Debug /t:PreprocessBindings
MSBuild.exe <btdfproj file path> /nologo /p:Configuration=Release /t:PreprocessBindings

Bounce BizTalk
MSBuild.exe <btdfproj file path> /nologo /t:BounceBizTalk

Import Bindings
MSBuild.exe <btdfproj file path> /nologo /t:ImportBindings /p:Configuration=Debug
MSBuild.exe <btdfproj file path> /nologo /t:ImportBindings /p:Configuration=Release

Export Settings
MSBuild.exe <btdfproj file path> /nologo /t:ExportSettings /p:Configuration=Debug
MSBuild.exe <btdfproj file path> /nologo /t:ExportSettings /p:Configuration=Release

Undeploy Rules
MSBuild.exe <btdfproj file path> /nologo /t:UndeployVocabAndRules /p:Configuration=Debug;RemoveRulePoliciesFromAppOnUndeploy=true
MSBuild.exe <btdfproj file path> /nologo /t:UndeployVocabAndRules /p:Configuration=Release;RemoveRulePoliciesFromAppOnUndeploy=true

Deploy Rules
MSBuild.exe <btdfproj file path> /nologo /t:DeployVocabAndRules /p:Configuration=Debug;ExplicitlyDeployRulePoliciesOnDeploy=true
MSBuild.exe <btdfproj file path> /nologo /t:DeployVocabAndRules /p:Configuration=Release;ExplicitlyDeployRulePoliciesOnDeploy=true

MSBuild.exe <btdfproj file path> /nologo /t:Deploy /p:Configuration=Debug
MSBuild.exe <btdfproj file path> /nologo /t:Deploy /p:Configuration=Release

MSBuild.exe <btdfproj file path> /nologo /t:Undeploy /p:Configuration=Debug
MSBuild.exe <btdfproj file path> /nologo /t:Undeploy /p:Configuration=Release

Build MSI
MSBuild.exe <btdfproj file path> /nologo /p:Configuration=Debug /t:Installer
MSBuild.exe <btdfproj file path> /nologo /p:Configuration=Release /t:Installer
Dec 29, 2016 at 11:50 AM
Edited Dec 29, 2016 at 11:50 AM
Hi, can anyone please let me know if BTDF is upgraded or if there is any plan to upgrade for BizTalk 2016 .?
Jan 17 at 11:59 AM
Edited Jan 17 at 12:09 PM
I had to make some extra changes in order to get the 2016 MSI working for Windows Server 2016 installs.

File BizTalkDeploymentFramework.targets:
<Target Name="SetToolsVersionParam">
plus  <CreateProperty Value="/tv:14.0" Condition="'$(MSBuildToolsVersion)' == '14.0'">
plus      <Output TaskParameter="Value" PropertyName="ToolsVersionParam" />
plus    </CreateProperty>
     <CreateProperty Value="/tv:4.0" Condition="'$(MSBuildToolsVersion)' == '4.0'">
       <Output TaskParameter="Value" PropertyName="ToolsVersionParam" />
Change GetFrameworkPath, TaskParameter to FrameworkVersion40Path:
minus     <Output TaskParameter="Path" PropertyName="DotNetFrameworkDir" />
plus      <Output TaskParameter="FrameworkVersion40Path" PropertyName="DotNetFrameworkDir" />
And in contrary of what is suggested above, I had to change the BizTalk2016MSI.wxs differently, and just added this:
 <SetProperty Id="MSBUILDPATH" Action="SetMSBUILDPATH2016" Value="[NETFRAMEWORK40FULLINSTALLROOTDIR]\MSBuild.exe" Sequence="both" After="CostFinalize">
      <![CDATA[BTS_PRODUCTNAME = "Microsoft BizTalk Server 2016" ]]>
    <SetProperty Id="MSBUILDTOOLSVER" Action="SetMSBUILDTOOLSVER2016" Value="/tv:14.0" Sequence="both" After="SetMSBUILDPATH2016">
      <![CDATA[BTS_PRODUCTNAME = "Microsoft BizTalk Server 2016" ]]>
It works on my machine guarantee :)
Jan 18 at 2:23 PM
SamAmin wrote:
SSOSettingsFileReader.dll should also be added to the Global Assembly Cache (GAC).
You can also put a second copy of SSOSettingsFileReader.dll in the folder C:\Program Files (x86)\MSBuild\DeploymentFrameworkForBizTalk\5.0 on the development/build machine. This will also copy it to the correct target location.

SamAmin! Thanks für your great description of steps. I could redo everything and managed to deploy my solution on top of biztalk 2016,

In case someone else is reading here: the UacElevate.exe stops working. On the first try. This is because of the missing msbuild location value and SamAmins solution fixes that.
Jan 18 at 10:52 PM
I've had success making BTDF 5.6 work with BizTalk 2016 based on the information in this discussion. Thank you, all who have contributed to this discussion. I do have some feedback on the process. The instructions provided by SamAmin where the basis for the work. But the additional instructions provided by gvdwiele were necessary for BTDF to be completely successful.

I needed to add a registry entry in order to allow BizTalkDeploymentFramework.targets to set the value for $(DeploymentFrameworkRootDir):
Windows Registry Editor Version 5.00

"InstallPath"="C:\\Program Files (x86)\\Deployment Framework for BizTalk 5.6\\"
VivekJayan provided the msbuild commands to perform most steps provided by the Visual Studio add-in that no longer work with with VS2015. I took these command line statements and created a set of powershell scripts for each msbuild command.
  • Bounce-BizTalk.ps1
  • Build-Server-Deploy-MSI-Debug.ps1
  • Deploy-BizTalk-Solution.ps1
  • Deploy-Rules-And-Vocabularies.ps1
  • Export-Environment-Settings.ps1
  • Import-BizTalk-Bindings.ps1
  • Preprocess-BizTalk-Bindings.ps1
  • Quick-Deploy-BizTalk-Solution.ps1
  • Terminate-All-Service-Instances.ps1
  • Undeploy-BizTalk-Solution.ps1
  • Undeploy-Rules-And-Vocabularies.ps1
  • Update-SSO-From-Settings-Spreadsheet.ps1
The script for each is identical except for the last line, which is the call to msbuild. For example, Build-Server-Deploy-MSI-Debug.ps1 is scripted as:
$msbuild = Join-Path -path (get-item env:\windir).value -ChildPath Microsoft.NET\Framework64\v4.0.30319
$msbuild = $msbuild + '\MSBuild.exe'
$PSScriptRoot = Split-Path -Parent -Path $MyInvocation.MyCommand.Definition
Set-Location -Path $PSScriptRoot
Set-Location -Path .\..\Deployment
$deployment = Get-Location
& $msbuild "$deployment\Deployment.btdfproj" /nologo /p:Configuration=Debug /t:Installer 
I simply took VivekJayan's command statements and applied them to the last line of each powershell script, respectively.

In my solution, the BTDF files are in a folder named Deployment. I've added a folder, and a solution folder, named Tools where I've put all of these powershell scripts. The Tools folder and the Deployment folder are on the same level of hierarchy in my solution. Finally, I installed Powershell Tools for Visual Studio 2015 (author: Adam Driscol). Now in the Solution Explorer, I can right click any of the powershell scripts in the Tools folder and click "Execute as Script".
Feb 6 at 2:27 PM
Version 5.7 RC1 is now available with support for BizTalk 2016 and ESB Toolkit 2.4. The Visual Studio add-in for VS 2015/BizTalk 2016 is not yet included.

Feb 7 at 1:14 AM
Edited Feb 7 at 1:27 AM
Hi Thomas,

I have downloaded the BTDF but could not find the Visual Studio Addins for the build and Generate MSI for biztalk project . Can you please update us with any documentation

Mar 10 at 8:00 PM
I've tested Version 5.7 RC1 with BizTalk 2016 and it is working perfectly to deploy applications. I still needed to have the registry entry I described above, but now directed to Deployment Framework for BizTalk 5.7. I'm not sure if that is a unique problem with my development workstation, or not. Thank you, Mr. Abraham, for providing the RC1 release.