2014-03-25 31 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)將是空/未定義的。

相關問題