为什么Visual Studio(2010)要为BizTalk服务器项目运行两个版本?



我正在使用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)将为空/未定义

最新更新