在自定义 VSTS PowerShell 脚本任务中使用特殊字符
Use special character in custom VSTS PowerShell script task
我目前面临的问题是我想在 VSTS 构建过程中将我的 AssemblyInfo 的版权动态设置为如下所示:
© 2012-2018 Company Name
但 2018 年应该动态设置为代表当年。
因此,我尝试将全局构建变量设置为如下内容:
© 2012-$(Date:yyyy) Company Name
这里的版权特殊字符工作正常,但日期在这个地方不起作用,所以我尝试的下一件事是使用内联脚本制作自定义 PowerShell 脚本构建任务。
这次我再次将我的全局变量 ("Copyright") 设置为
-set during build-
并且在内联脚本中我尝试像这样替换值:
$date=$(Get-Date -Format yyyy);
$_Copyright = "© 2012-$date Company Name";
Write-Host "##vso[task.setvariable variable=Copyright]$_Copyright";
现在我的动态日期开始工作了,但是在我发布的 dll 上我得到了
"c 2012-2018 Company Name"
使用 '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 Company Name"
尽管在我的本地计算机上,我的 PowerShell 为 [char]0x00A9 提供了 '©' 符号。
有什么建议吗?
我可以重现这个问题。
似乎 logging command 无法识别符号 ©。所以我们不能通过以下命令设置包含©作为值的变量:
Write-Host "##vso[task.setvariable variable=Copyright]$_Copyright"
在您的情况下,您可以尝试以下解决方法:
1、使用Copyright (c)
代替Copyright ©
,logging命令可以识别字符串(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)
得到整个Copyright字符串。
或者您可以直接使用 ©$(Company)
检查是否有效。
我目前面临的问题是我想在 VSTS 构建过程中将我的 AssemblyInfo 的版权动态设置为如下所示:
© 2012-2018 Company Name
但 2018 年应该动态设置为代表当年。 因此,我尝试将全局构建变量设置为如下内容:
© 2012-$(Date:yyyy) Company Name
这里的版权特殊字符工作正常,但日期在这个地方不起作用,所以我尝试的下一件事是使用内联脚本制作自定义 PowerShell 脚本构建任务。 这次我再次将我的全局变量 ("Copyright") 设置为
-set during build-
并且在内联脚本中我尝试像这样替换值:
$date=$(Get-Date -Format yyyy);
$_Copyright = "© 2012-$date Company Name";
Write-Host "##vso[task.setvariable variable=Copyright]$_Copyright";
现在我的动态日期开始工作了,但是在我发布的 dll 上我得到了 "c 2012-2018 Company Name" 使用 '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 Company Name"
尽管在我的本地计算机上,我的 PowerShell 为 [char]0x00A9 提供了 '©' 符号。
有什么建议吗?
我可以重现这个问题。
似乎 logging command 无法识别符号 ©。所以我们不能通过以下命令设置包含©作为值的变量:
Write-Host "##vso[task.setvariable variable=Copyright]$_Copyright"
在您的情况下,您可以尝试以下解决方法:
1、使用Copyright (c)
代替Copyright ©
,logging命令可以识别字符串(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)
得到整个Copyright字符串。
或者您可以直接使用 ©$(Company)
检查是否有效。