2012-06-19 10 views
5

次のexecタスクを実行して、assemblyinfo.csファイルのチェックインを行っています。私は終了コードを返そうとしていますが、何らかの理由で常に空です。MSBuild execタスク、終了コードが空になる

<!--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> 

私は2つの方法で終了コードを読み取るために試してみた:

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

の両方が空です。助言がありますか?

+0

です。 – sll

答えて

13

一般に、あなたが示したように機能します。

  • あなたExecでも実行を確認してください、それはです:あなたはしかし、検討する必要があります物事のカップル

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

    :参考

    は、こちらより「自己完結」の例でありますConditionTrueと評価されます。

  • -Taskを使用してErrorCodeプロパティを出力し、実際に設定されているかどうかを確認します(期待値)。ただし、詳細メッセージを有効にするには、Importance='high'を使用するか、msbuild.exe /v:dを実行してMSBuildに出力が表示されるようにしてください。

+0

メソッドが呼び出されないようにする条件によって発生する問題。ありがとう – jaspernygaard

+2

mono/xbuildの下にプロパティを入力するために ''タスクで 'IgnoreExitCode =" true "'を指定しなければなりませんでした。 – weirdan

関連する問題