MSBuild ContinueOnError

时间:2009-01-20 12:25:39

标签: msbuild biztalk

我有一个MSBuild项目如下:                                              

<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”中“完成构建目标”删除应用程序“ - 失败。构建继续,因为”CallTarget“任务上的”ContinueOnError“设置为”true“。

但是,它从“RemoveApplications”中删除并转移到“AddApplications”

感激地收到任何帮助,

由于

罗布。

1 个答案:

答案 0 :(得分: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>