2009-04-16 23 views
18

我們有一個流程,在我們每晚構建之前運行。如果進程失敗,它會生成一個文本文件。我需要做的就是檢查文件是否存在,如果存在,則導致失敗的MSBuild。如果文件存在,如何在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". 

我知道上面的可能是矯枉過正,但我​​只是需要一些工作!我在這裏錯過什麼?!

感謝, 德里克

+4

我想我找到可接受的解決方案: <錯誤條件=」存在('C:\ Process \ Fail.txt')「文本=」進程沒有通過!「 /> – dprice 2009-04-16 19:23:38

+0

這實際上是一個很好的解決方案。 – 2009-04-19 00:28:24

回答

27

正如在他的評論@dprice指出,這樣做的最好的解決辦法是:

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