2016-11-28 11 views
1

現在、私は、それぞれのC#プロジェクトファイルにポストビルドイベントのコピージョブ(C#で書かれたカスタムツールを使用)がある大きなレガシープロジェクトに取り組んでいます。あなたが見ることができるように環境変数をソリューションビルドステップに渡す方法

ポストビルドイベントは

"$(MyEnvVar)\_Build\_Binaries\CopyTool" "$(TargetDir)$(TargetName)" "$(MyEnvVar)\_Binaries" 

のように見える、コピージョブのパスは、環境変数の値に基づいています。

ここで、上記のプロジェクトのいくつかを参照する別のソリューションを構築したいと考えています。

ビルドに環境変数が設定されていないため、ビルドが失敗します。

ビルドvNext定義でビルドステップの順序:

のsetenv PowerShellスクリプト

[Environment]::GetEnvironmentVariable("MyEnvVar","Process") 
Write-Host 'build sources dir' 
Write-Host $Env:BUILD_SOURCESDIRECTORY 
[Environment]::SetEnvironmentVariable("MyEnvVar", $Env:BUILD_SOURCESDIRECTORY, "Process") 
  • Visual Studioのビルドステップ
  • Visual Studioのテスト
  • ...(インデックス、出版、コピー、出版物)

しかし、 "MyEnvVar"の値は、VS Solution Buildステップで実行されるポストビルドイベントではアクセスできません。

VSビルドステップが、以前にTFS onPremise(ではなく、 VSO)のpowershellスクリプトで設定された値を持つことを達成するにはどうすればよいですか? PowerShellで

答えて

2

は解決策を見つけました。

は、PowerShellスクリプト

Write-Host “##vso[task.setvariable variable=MY_BuildVariable]$Env:BUILD_SOURCESDIRECTORY” 

を作成し、最初のビルドステップとしてそれを実行します。

ビルド変数は環境変数と同じ名前なので、環境変数の値はpowershellスクリプトの値で上書きされます。


注意を述べてEnvironment variables参照してください:あなたは、変数タブに(たとえば、PATHのために)同じ名前の変数を定義した場合、その後、あなたの価値は、上記のように、あなたがそれを使用する環境変数を上書きします。

0

、あなたが得るか、単に以下の方法を使用して、任意の環境変数を設定することができます。

#for a particular environmental variable 
Get-Childitem env:computername 
# for getting all the environmental variables 
get-childitem -path env:* 

#for Setting any value in any environmental variable 
$env:Variable1 ="value1" 

# For changing the vale of environmental variables 
Set-Item -path env:Variable1 -value "Value2" 
+0

申し訳ありませんが、私はそれが私を助けることができる方法を理解していません – Khh

+0

@Khh:MyEnvVarの値を渡している場所のスクリプトを提供できる場合は、それを通過するのは簡単でしょう。 –

+0

私はこの問題を編集しました。コピージョブは、PowerShellスクリプトではなく、ツールによって実行されます。 – Khh

関連する問題