2012-06-19 5 views
5

J'ai la tâche exec suivante, en effectuant la vérification des fichiers assemblyinfo.cs. J'essaie de retourner le code de sortie, mais pour une raison quelconque, il est toujours vide.Tâche exécutive MSBuild, code de sortie vide

<!--Checkin if all succeeded--> 
<Exec Condition=" '$(LocalCompilationSuccess)' != 'Failed' and '$(LocalTestSuccess)' != 'Failed' " ContinueOnError="True" 
       Command='&quot;$(TfCommand)&quot; checkin /recursive /comment:"$(NoCICheckInComment) $(BuildDefinitionName): build succeeded, checkin changes." /override:"TeamBuild $(BuildDefinitionName)" $/SomeProject/Trnk' WorkingDirectory="$(SolutionRoot)" > 
    <Output TaskParameter="ExitCode" PropertyName="ErrorCode"/> 
</Exec> 

J'ai essayé de lire le code de sortie de 2 façons:

'%(ErrorCode.Identity)' 
'$(ErrorCode)' 

Les deux sont vides. Aucune suggestion?

+0

étrange, essayez '' – sll

Répondre

13

En général, cela fonctionne comme vous l'avez montré.

Pour référence, voici un autre exemple "selfcontained":

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0"> 
    <Target Name="help"> 
    <Exec ContinueOnError="True" Command='cmd.exe /c dir'> 
     <Output TaskParameter="ExitCode" PropertyName="ErrorCode"/> 
    </Exec> 
    <Message Importance="high" Text="$(ErrorCode)"/> 
    </Target> 
</Project> 

Un couple de choses que vous pouvez envisager cependant:

  • Assurez-vous que vos Exec même exécute, c'est Condition évalue à True.

  • Générez la propriété ErrorCode en utilisant le Message -Tâche, pour voir si elle est réellement définie (à la valeur attendue). Toutefois, assurez-vous que MSBuild affichera la sortie, en utilisant Importance='high' ou en exécutant msbuild.exe /v:d pour activer les messages détaillés.

+0

problème causé par la condition empêchant la méthode d'être invoquée. Merci – jaspernygaard

+2

Sous mono/xbuild j'ai aussi dû spécifier 'IgnoreExitCode =" true "' dans la tâche '' pour que la propriété soit remplie. – weirdan