为何Visual Studio中CustomPostDeployTarget早于BizTalk应用启动执行?
问题原因
- 自定义目标未配置正确的依赖约束。BTDF要求
CustomPostDeployTarget必须显式声明DependsOnTargets="DeployApp"属性,才能绑定到BTDF的完整部署生命周期,否则MSBuild会按照默认逻辑调度目标,直接导致执行时机提前。 - 触发部署的入口不对。你用的是Visual Studio默认的项目部署功能,该流程不会加载BTDF的全链路执行逻辑,仅会完成基础编译和构件上传,不会按BTDF定义的「部署完构件→启动应用→执行自定义目标→重启主机」顺序执行。
- 缺少执行时机的补充声明。高版本MSBuild需要额外搭配
AfterTargets="StartApplication"属性,才能明确锁定目标在应用启动操作完成后运行。
修复方法
把你的目标定义修改为如下内容即可:
<Target Name="CustomPostDeployTarget" DependsOnTargets="DeployApp" AfterTargets="StartApplication"> <Exec Command="powershell.exe -NoExit -Command ". '"D:\Users\Test\UnenlistSendPorts.ps1"'; UnenlistSendPort_u ""$(ProjectName)" "$(s)""" "/> </Target>
后续部署时选择Visual Studio顶部菜单栏BTDF插件提供的「Deploy Solution」入口触发完整部署,不要用项目右键的默认部署选项,就能保证执行时机符合预期。
内容的提问来源于stack exchange,提问作者Shumaila
相关产品推荐
相关产品推荐

