在自定义 VSTS PowerShell 脚本任务中使用特殊字符



我目前面临的问题是,我想在VSTS构建期间动态设置AssemblyInfo的版权

,如下所示:

© 2012-2018 公司名称

但 2018 年应该动态设置,代表当前年份。 因此,我尝试将全局构建变量设置为如下所示:

© 2012-$(日期:yyyy) 公司名称

在这里,版权特殊字符工作正常,但日期在这个地方不起作用,所以我尝试的下一件事是使用内联脚本创建自定义 PowerShell 脚本构建任务。 这次我再次将我的全局变量("版权")设置为

-

在构建过程中设置-

在内联脚本中,我尝试像这样替换值:

$date=$(Get-Date -Format yyyy);
$_Copyright = "© 2012-$date Company Name";
Write-Host "##vso[task.setvariable variable=Copyright]$_Copyright";

现在我让我的动态日期工作了,但在我发货的 dll 上我得到了 "c 2012-2018 公司名称" 用"c"代替"©"。

所以我用[char]0x00A9替换了它:

$date=$(Get-Date -Format yyyy);
$_Copyright = [char]0x00A9 + " 2012-$date Company Name";
Write-Host "##vso[task.setvariable variable=Copyright]$_Copyright";

但结果没有任何变化: "c 2012-2018 公司名称">

虽然在我的本地机器上,我的PowerShell给了我[char]0x00A9 ©'符号。

有什么建议吗?

我可以重现这个问题。

似乎日志记录命令无法识别符号 © 。因此,我们无法通过以下命令将包含 的©变量设置为值:

Write-Host "##vso[task.setvariable variable=Copyright]$_Copyright"

在您的方案中,可以尝试以下解决方法:

1、使用Copyright (c)代替Copyright ©,loging命令可以识别字符串(c)

$date=$(Get-Date -Format yyyy);
$_Copyright = "(c) 2012-$date Company Name";
Write-Host "##vso[task.setvariable variable=Copyright]$_Copyright";

2、组合变量:

1) 设置一个全局构建变量,例如:$(Symbol)并将©设置为值

2) 使用日志记录命令设置日期变量:

$date=$(Get-Date -Format yyyy);
$Company= "2012-$date Company Name";
Write-Host "##vso[task.setvariable variable=Company]$Company";

3) 一起使用变量$(Symbol)$(Company)来获取整个版权字符串。

或者,您可以直接使用©$(Company)来检查是否有效。

最新更新