8

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

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

どちらも空です。助言がありますか?

4

1 に答える 1

18

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

参考までに、より「自己完結型」の例を次に示します。

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

ただし、考慮すべき点がいくつかあります。

  • あなたのExec偶数が実行Conditionされる ことを確認してくださいTrue

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

于 2012-06-19T11:20:10.037 に答える