Как я могу вызвать ошибку в MSBuild, если файл существует? - PullRequest
22 голосов
/ 16 апреля 2009

У нас есть процесс, который запускается до наших ночных сборок. Если процесс не удается, он генерирует текстовый файл. Все, что мне нужно сделать, это проверить, существует ли файл и вызывает ли он сбой MSBuild.

В настоящее время я пробовал следующее:

<CreateProperty Condition="Exists('C:\Process\Fail.txt')"
      Value="false">
  <Output TaskParameter="Value" PropertyName="ProcessTestPassed"/>
</CreateProperty>
<Message Text="Process did not pass" Condition="Exists('C:\Process\Fail.txt')" ContinueOnError="false" />

<ReadLinesFromFile File="C:\Process\Fail.txt"                  Condition="'$(ProcessTestPassed)'=='false'" ContinueOnError="false" >
  <Output TaskParameter="Lines" ItemName="FileContents" />
</ReadLinesFromFile>
<Message Text="FileContents: $(FileContents)"  Condition="'$(ProcessTestPassed)'=='false'" ContinueOnError="false" />

Что дает проходную сборку с таким выводом:

Task "CreateProperty"
Done executing task "CreateProperty".
Task "Message"
  QAWizardProTestPassed did not pass
Done executing task "Message".
Task "ReadLinesFromFile"
Done executing task "ReadLinesFromFile".
Task "Message"
  FileContents: 
Done executing task "Message".

Я знаю, что вышесказанное, вероятно, излишне, но мне просто нужно что-то работающее! Что мне здесь не хватает?!

Спасибо, Derek

1 Ответ

32 голосов
/ 22 апреля 2009

Как отметил @dprice в своем комментарии, лучшее решение для этого будет:

<Error Condition="Exists('C:\Process\Fail.txt')" Text="Process did not pass!" /> 
...