nuget内.config文件的令牌替换(powershell或AzureDevOps任务)



我在AzureDevOps中有一条分阶段的管道:

  • 构建:构建并生成一些nuget(使用蛋糕构建(。nuget包含一些设置(如"value=#{tokenName}"(的标记化web.config
  • 部署到环境X:只需要替换nuget中web.config中的令牌,并将其推送到nuget repo。(这适用于不同的环境(

我只是想知道一种简单的方法来完成这件事。

我知道有AzureDevOps任务";替换令牌";可以实现这种替换,但这将需要打开所有nuget的包装,替换并重新包装。这是一项耗费大量时间的任务。

我想,如果我只是从nuget中解压缩匹配的.config文件,对它们进行转换,然后再次打包这些文件,会更快。这会很快。问题是,在这种情况下,需要在powershell中完成任务,并将标记替换为azuredevops变量组中的值。

如果我有一个变量组,称为";Dev";其中一个变量称为";IdentityService.BaseUrl";

我在powershell中尝试过这样的操作:

$content = "Example file string with token #{IdentityService.BaseUrl} end"
$variableName = [Regex]::Matches($content, '(?<=#{)(.*?)(?=})') | Select -ExpandProperty Value

# variableName is now "IdentityService.BaseUrl"

Write-Host "Value of $variableName is $($variableName)"
# This will print: Value of IdentityService.BaseUrl is IdentityService.BaseUrl
# I need to print the name of the variable and the variable value from the azureDevOpsGroup

有什么想法吗?

根据您目前的情况,我们不能使用双变量。在azure devops管道中,如果我们可以确定第一个变量(比如在变量中设置值(,那么我们可以使用脚本$(${{variables.variableName}})来帮助我们找到真正的值。

但是在您的脚本中,第一个变量是无法确定的,所以如果可能的话,我们建议您可以使用if((eles((来帮助设置第一个变量。

最新更新