gpt4 book ai didi

powershell - 如何将环境变量传递到解决方案构建步骤(Build vNext)

转载 作者:行者123 更新时间:2023-12-02 23:24:17 30 4
gpt4 key购买 nike

目前,我正在处理一个大型旧项目,该项目在构建后事件中每个C#项目文件都有一个复制作业(使用C#编写的自定义工具)。

发布后事件看起来像

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

如您所见,复制作业的路径基于环境变量的值。

我现在想构建另一个解决方案,该解决方案引用上面提到的一些项目。

由于未为构 build 置环境变量,因此构建失败。

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测试
  • ...(索引,发布,复制,发布 Artifact )

  • 但是在由VS解决方案构建步骤执行的构建后事件中,无法访问“MyEnvVar”的值。

    如何实现VS Build步骤具有先前在TFS onPremise上的powershell脚本中设置的值( 不是 VSO)?

    最佳答案

    找到了解决方案。

    创建了一个PowerShell脚本

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

    并将其作为第一步构建步骤执行。

    因为构建变量与环境变量具有相同的名称,所以环境变量的值将被Powershell脚本的值覆盖。

    请参阅 Environment variables,其中指出
    注意:如果您在“变量”选项卡上定义了一个具有相同名称的变量(例如PATH),那么当您使用它时,您的值将覆盖环境变量,如上所示。

    关于powershell - 如何将环境变量传递到解决方案构建步骤(Build vNext),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40843323/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com