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

在自定义VSTS PowerShell脚本任务中使用特殊字符,powershell,azure-devops,msbuild-task,Powershell,Azure Devops,Msbuild Task,我目前面临的问题是,我想在VSTS构建期间动态设置AssemblyInfo的版权,如下所示: $date=$(Get-Date -Format yyyy); $_Copyright = "© 2012-$date Company Name"; Write-Host "##vso[task.setvariable variable=Copyright]$_Copyright"; ©2012-2018年公司名称 但2018年应该动态设置,代表当前年份。 因此,我尝试将全局构建变量设置为如下所示:

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

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

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

$date=$(Get-Date -Format yyyy);
$_Copyright = "© 2012-$date Company Name";
Write-Host "##vso[task.setvariable variable=Copyright]$_Copyright";
©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=Copyright]$\u Copyright”

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

1,使用
版权(c)
而不是
版权
,日志记录命令可以识别字符串
(c)

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

$date=$(Get-Date -Format yyyy);
$_Copyright = "(c) 2012-$date Company Name";
Write-Host "##vso[task.setvariable variable=Copyright]$_Copyright";
1) 设置全局生成变量,例如:
$(Symbol)
,并将
设置为值

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

$date=$(Get-Date -Format yyyy);
$Company= "2012-$date Company Name";
Write-Host "##vso[task.setvariable variable=Company]$Company";
3) 将变量
$(Symbol)$(Company)
一起使用以获得整个版权字符串


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

非常感谢您的回答。我将使用您建议的解决方案2-组合变量;这两种方法对我来说都很好。很遗憾,Unicode不受支持,因为我认为这不会很快改变,所以我会将这个问题标记为已解决。