1

我有一个 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”中完成构建目标“RemoveApplications”——失败。构建继续,因为任务“CallTarget”上的“ContinueOnError”设置为“true”。

但随后,它退出“RemoveApplications”并移至“AddApplications”

感激地收到任何帮助,

谢谢

抢。

4

1 回答 1

1

我以不同的方式解决了这个问题,并在删除应用程序之前使用单独的目标来检查应用程序是否存在。

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

我使用该存在目标作为其他目标中的“条件”。

<Target Name="DeleteApplication" Condition="$(ApplicationExists)=='True'" DependsOnTargets="ApplicationExists">
    <BizTalk2006.Application.Stop Application="$(ApplicationName)"/>
    <BizTalk2006.Application.Delete Application="$(ApplicationName)"/>
</Target>
于 2009-01-20T16:13:31.667 回答