2009-04-16 29 views
18

Nous avons un processus qui court avant nos constructions nocturnes. Si le processus échoue, il génère un fichier texte. Tout ce que j'ai besoin de faire est de vérifier si le fichier existe, et si c'est le cas, provoquer un MSBuild défaillant.Comment puis-je provoquer une erreur dans MSBuild si un fichier existe?

J'ai actuellement essayé ce qui suit:

<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" /> 

Ce qui donne un passage à construire avec cette sortie:

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". 

Je sais que ce qui précède est probablement exagéré, mais je dois juste quelque chose de travail! Qu'est-ce que j'oublie ici?!

Merci, Derek

+4

Je pense avoir trouvé une solution acceptable: dprice

+0

C'est en fait une bonne solution. –

Répondre

27

Comme l'a noté @dprice dans son commentaire, la meilleure solution pour ce serait:

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

Le problème à ce sujet est l'endroit où vous placez la balise 'Error'. Dans mon cas, j'obtiens cette erreur: 'Erreur: la balise n'est plus prise en charge en tant qu'enfant de l'élément . Placez cette balise dans une cible et ajoutez le nom de la cible à l'attribut "InitialTargets" de l'élément ' – knocte

+0

Il fonctionne sous un comme https://msdn.microsoft.com/fr-fr/library/8b08t3s4 .aspx. (Msvs 2015) – crokusek