我有一个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”
感激地收到任何帮助,
由于
罗布。
答案 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>