MSBuild ПродолжитьОнроррор

У меня есть проект 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», я получаю сообщение:

«Завершено создание цели «RemoveApplications» в проекте «cleardownApplications.proj» — НЕУДАЧА. Сборка продолжается, поскольку «ContinueOnError» в задаче «CallTarget» имеет значение «true».

Но затем он выпадает из «RemoveApplications» и переходит в «AddApplications».

Любая помощь с благодарностью получена,

Спасибо

Роб.


person Rob Bowman    schedule 20.01.2009    source источник


Ответы (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>
person Riri    schedule 20.01.2009
comment
Привет, Рири! Является ли сборка BizTalk2006 набором специально созданных вами задач MSBuild? - person Rob Bowman; 25.03.2009
comment
Хороший вопрос. Пропустил это. Эту задачу вы найдете в библиотеке SDC. codeplex.com/sdctasks - person Riri; 26.03.2009