我正在使用Visual Studio 2010和BizTalk 2010。
当我添加一个新的Empty BizTalk Server Project
并构建它时,我得到以下输出:
------ Build started: Project: ThrowAway1, Configuration: Debug Any CPU ------
ThrowAway1 -> c:...ProjectsThrowAway1ThrowAway1binDebugThrowAway1.dll
ThrowAway1 -> c:...ProjectsThrowAway1ThrowAway1binDebugThrowAway1.dll
========== Build: 1 succeeded or up-to-date, 0 failed, 0 skipped ==========
我已经尝试停用发布版本。但我仍然得到两个构建事件-这也影响构建后事件。
使用默认的控制台应用程序,我只得到一个构建事件。
我的目标是在构建后的事件中运行我自己的部署PowerShell脚本。脚本运行得很好,但是它被这种行为调用了两次。
这似乎是BizTalk项目的预期行为。
我只是推测这是因为许多BizTalk工件是在两步过程中编译的。例如,编排到c#,然后c#到输出程序集。
我唯一能推荐的是要么使脚本确定性,要么可能是一个运行整个解决方案的后构建的副项目。
你也可以调查BizTalk部署框架:http://biztalkdeployment.codeplex.com/
作为一个实用的解决方案:
检查.btproj MSBuild文件及其导入
<Import Project="$(MSBuildToolsPath)Microsoft.CSharp.targets" />
<Import Project="$(MSBuildExtensionsPath)MicrosoftBizTalkBizTalkC.targets" />
其中BizTalkC.targets
导入
<Import Project="$(MSBuildExtensionsPath)MicrosoftBizTalkBizTalkCommon.targets" />
为$(SecondBuild)
在BizTalkCommon.targets
中的用量。
可以在构建后的事件中使用:
if "$(SecondBuild)"=="true" (
rem Run script.
)
对于第一次构建,$(SecondBuild)
将为空/未定义