2009-01-20 41 views
1

我有一個MSBuild項目如下: 的MSBuild ContinueOnError

<Target Name="StopApplications"> 
    <BizTalk.BuildGenerator.Tasks.StopApplication MessageBoxConnection="$(BizTalkManagementDatabaseConnectionString)" ApplicationName="x.Direct.Brackmills"/> 
    <BizTalk.BuildGenerator.Tasks.StopApplication MessageBoxConnection="$(BizTalkManagementDatabaseConnectionString)" ApplicationName="x.Direct.Manhattan"/> 
</Target> 

<Target Name="RemoveApplications"> 
    <Exec Command="BTSTask RemoveApp -ApplicationName:x.Direct.Brackmills -Server:$(BizTalkDatabaseServerName) -Database:$(BizTalkManagementDatabaseName)" /> 
    <Exec Command="BTSTask RemoveApp -ApplicationName:x.Direct.Manhattan -Server:$(BizTalkDatabaseServerName) -Database:$(BizTalkManagementDatabaseName)" /> 
</Target> 

我的問題是,調用 「RemoveApplications」 的目標時,在ContinueOnError不工作,我會期望。我有一長串的應用程序停止和刪除。他們並不是所有的通道都存在,所以我需要腳本在發現它們不在時繼續。這似乎適用於「StopApplications」目標,但當它在「RemoveApplications」目標中找到丟失的應用程序時,我會收到以下消息:

「在項目」cleardownApplications.proj「中完成構建目標」RemoveApplications「 - FAILED 。建立持續,因爲在任務「CallTarget」「ContinueOnError」設置爲「真」。

但隨後,它將退出「RemoveApplications」,並移動到「AddApplications」

任何幫助感激地接受,

謝謝

Rob。

回答

1

我解決了這個有點不同,並使用一個單獨的目標來檢查應用程序是否存在之前刪除它。

<Target Name="ApplicationExists"> 
    <BizTalk2006.Application.Exists Application="$(ApplicationName)"> 
     <Output TaskParameter="DoesExist" PropertyName="ApplicationExists" /> 
    </BizTalk2006.Application.Exists> 
</Target> 

我在其他目標中使用exists-target作爲「條件」。

<Target Name="DeleteApplication" Condition="$(ApplicationExists)=='True'" DependsOnTargets="ApplicationExists"> 
    <BizTalk2006.Application.Stop Application="$(ApplicationName)"/> 
    <BizTalk2006.Application.Delete Application="$(ApplicationName)"/> 
</Target> 
+0

嗨Riri,BizTalk2006程序集是您創建的定製MSBuild任務的集合嗎? – 2009-03-25 17:50:49