如何将环境变量传递到解决方案构建步骤 (Build vNext)
How to pass environment variable to Solution build step (Build vNext)
目前我正在处理一个大型遗留项目,其中每个 c# 项目文件在 post 构建事件中都有一个复制作业(使用用 C# 编写的自定义工具)。
post 构建事件看起来像
"$(MyEnvVar)\_Build\_Binaries\CopyTool" "$(TargetDir)$(TargetName)" "$(MyEnvVar)\_Binaries"
如您所见,复制作业的路径基于环境变量的值。
我现在想构建另一个引用上面提到的一些项目的解决方案。
构建失败,因为没有为构建设置环境变量。
Build 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 解决方案构建步骤执行的 post 构建事件中不可访问。
我如何实现 VS 构建步骤具有先前在 TFS onPremise 上的 powershell 脚本中设置的值(不是 VSO)?
在Powershell中,您可以通过以下方式获取或设置任何环境变量:
#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"
找到解决方案。
创建了一个 powershell 脚本
Write-Host “##vso[task.setvariable variable=MY_BuildVariable]$Env:BUILD_SOURCESDIRECTORY”
并将其作为第一个构建步骤执行。
由于构建变量与环境变量同名,环境变量的值被powershell脚本的值覆盖
请参阅 Environment variables 其中指出
注意:如果您在变量选项卡上定义了同名变量(例如 PATH),那么当您使用它时,您的值将覆盖环境变量,如上所示。
目前我正在处理一个大型遗留项目,其中每个 c# 项目文件在 post 构建事件中都有一个复制作业(使用用 C# 编写的自定义工具)。
post 构建事件看起来像
"$(MyEnvVar)\_Build\_Binaries\CopyTool" "$(TargetDir)$(TargetName)" "$(MyEnvVar)\_Binaries"
如您所见,复制作业的路径基于环境变量的值。
我现在想构建另一个引用上面提到的一些项目的解决方案。
构建失败,因为没有为构建设置环境变量。
Build 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 解决方案构建步骤执行的 post 构建事件中不可访问。
我如何实现 VS 构建步骤具有先前在 TFS onPremise 上的 powershell 脚本中设置的值(不是 VSO)?
在Powershell中,您可以通过以下方式获取或设置任何环境变量:
#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"
找到解决方案。
创建了一个 powershell 脚本
Write-Host “##vso[task.setvariable variable=MY_BuildVariable]$Env:BUILD_SOURCESDIRECTORY”
并将其作为第一个构建步骤执行。
由于构建变量与环境变量同名,环境变量的值被powershell脚本的值覆盖
请参阅 Environment variables 其中指出
注意:如果您在变量选项卡上定义了同名变量(例如 PATH),那么当您使用它时,您的值将覆盖环境变量,如上所示。