2014-03-25 29 views
0

我使用Visual Studio 2010和BizTalk 2010
当我添加一个新的Empty BizTalk Server Project并构建它,我得到以下的输出:为什么Visual Studio(2010)为BizTalk Server项目运行两个版本?

------ Build started: Project: ThrowAway1, Configuration: Debug Any CPU ------ 
    ThrowAway1 -> c:\...\Projects\ThrowAway1\ThrowAway1\bin\Debug\ThrowAway1.dll 
    ThrowAway1 -> c:\...\Projects\ThrowAway1\ThrowAway1\bin\Debug\ThrowAway1.dll 
========== Build: 1 succeeded or up-to-date, 0 failed, 0 skipped ========== 

我已经尝试停用的发布版本。但是我仍然得到两个构建事件 - 这也会影响构建后事件。
对于默认的控制台应用程序,我只获取一个生成事件。

我的目标是在后期构建事件中运行我自己的部署PowerShell脚本。该脚本很好地发展,但这种行为被称为两次。

回答

0

这似乎是BizTalk项目的预期行为。

我只是在猜测这是因为很多BizTalk工件是在两个步骤中编译的。例如,编排到C#,然后C#到输出程序集。

我唯一可以推荐的是让脚本成为确定性的,或者是为整个解决方案运行后期构建的副项目。

您也可以调查BizTalk部署框架:http://biztalkdeployment.codeplex.com/

+0

谢谢!好的提示。不知道两步编译的必要性。 – Pascal

0

作为一个务实的解决方案:
检查.btproj的MSBuild文件,进口

<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> 
<Import Project="$(MSBuildExtensionsPath)\Microsoft\BizTalk\BizTalkC.targets" /> 

其中BizTalkC.targets进口

<Import Project="$(MSBuildExtensionsPath)\Microsoft\BizTalk\BizTalkCommon.targets" /> 

显示中$(SecondBuild)的用法。

这可以在后生成事件中使用:

if "$(SecondBuild)"=="true" (
    rem Run script. 
) 

对于第一个构建$(SecondBuild)将是空/未定义的。

相关问题