2009-04-16 7 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". 

私は上記の知っているが、おそらく過剰ですが、私はちょうど働く何かを必要とします!私はここで何が欠けているのですか?彼のコメントに@dpriceで述べたように

おかげで、 デレク

+4

私は私が受け入れ可能な解決策を見つけたと思いますExists( 'C:\ Process \ Fail.txt') "Text ="プロセスがパスしなかった! " /> – dprice

+0

これは実際には良い解決策です。 –

答えて

27

は、このための最善の解決策は、次のようになります。 <エラー条件=」:

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

これに関する問題は、あなたが 'Error'タグを置くところです。私の場合、私はこのエラーが発生しています: 'エラー:タグは要素の子としてサポートされなくなりました。このタグをターゲット内に配置し、要素の "InitialTargets"属性にターゲットの名前を追加します。 – knocte

+0

、https://msdn.microsoft.com/en-us/library/8b08t3s4の下で動作しています.aspx。 (Msvs 2015) – crokusek

関連する問題