2016-08-25 10 views
0

診断ログを有効にすると、環境変数にMSBuild TaskIdが誤って設定されていますが、これを停止するには何を変更する必要がありますか?/v:diag MSBuildからのpowershellコマンドの動作を停止します

<Exec Command="powershell -Command Write-Host ##vso[task.setvariable variable=AutoBuildNumber;]$(BuildNumber)" /> 

私のビルド番号は999「AutoBuildNumber」は/v:diagは、環境変数は、私のテストに基づいて999 (TaskId:6)

+0

私はあなたが診断出力用のMSBuildを求めているすべての後に、ここで間違っている(というか、適切な解析機能が欠如している)VSO主張するだろう。出力はPowershellを経由する必要がありますか? Messageタスクを使用すると、BuildNumberの後にnwelineを出力して設定するだけで済みます。 – stijn

+0

@stijn私はそれを働かせることができませんでした - あなたは例を使ってより完全な答えを出すことができますか? –

答えて

0

になります設定されている場合、環境変数を設定する場合、値は変更することが999に設定する必要がある場合(## vso [task.setvariable variable = AutoBuildNumber;] $(BuildNumber))、BuildNumber値は正しいです。

したがって、余分な文字列をPowerShellスクリプトで削除できます。例えば、(あればブロックに{}を追加):

$MyBuildNum=$env:AutoBuildNumber 

($ MyBuildNum)

if($MyBuildNum.Contains("TaskId")) 
{ 
    $MyBuildNum=$MyBuildNum.Substring(0,$MyBuildNum.IndexOf(" ")); 
} 
0

かのことはできたMSBuildメッセージタスクおよび広告、それの後に改行を使用して、出力ログテキストは。これは、後にTaskIdなしの出力を与えますが、診断ログで2回発生しますが、問題はないと思います。例:msbuild <projectfile> /t:ShowBuildNumber /v:diag

<Target Name="ShowBuildNumber"> 
    <PropertyGroup> 
    <BuildNumber>12</BuildNumber> 
    </PropertyGroup> 
    <Message Text="##vso[task.setvariable variable=AutoBuildNumber;]$(BuildNumber)%0a" /> 
</Target> 

出力:

Using "Message" task from assembly "Microsoft.Build.Tasks.v12.0, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a". 
Task "Message" (TaskId:2) 
    Task Parameter:Text=##vso[task.setvariable variable=AutoBuildNumber;]12 
    (TaskId:2) 
    ##vso[task.setvariable variable=AutoBuildNumber;]12 
    (TaskId:2) 
Done executing task "Message". (TaskId:2) 
関連する問題