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

标签 powershell azure-devops msbuild-task

我目前面临的问题是我想在 VSTS 构建过程中将我的 AssemblyInfo 的版权动态设置为如下所示:

© 2012-2018 Company Name

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

© 2012-$(Date:yyyy) Company Name

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

-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 公司名称" 用 '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 提供了 '©' 符号。

有什么建议吗?

最佳答案

我可以重现这个问题。

似乎是 logging command无法识别符号 ©。所以我们不能通过以下命令设置包含©的变量作为值:

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

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

1、使用Copyright (c)代替Copyright ©,日志命令可以识别字符串(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) 来检查是否有效。

关于powershell - 在自定义 VSTS PowerShell 脚本任务中使用特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51425613/

相关文章:

MSBuild,如何从 .csproj 获取所有项目引用

msbuild - 如何从控制台输出中隐藏我在MSBuild Exec任务中使用的命令?

azure - 对象参数内的 ARM 模板 keyvault 访问策略

powershell - 获取最接近给定日期的文件

azure - 我们可以在管理组级别拥有用户身份吗?

azure-devops - 在 azure devops 中,我们如何知道发布候选中有哪些故事?

MSBUILD动态创建配置XML Dotfuscator

c# - .NET https身份验证(Pingdom API)

mysql - 使用 Powershell 针对 MySQL 运行 MySql 存储过程脚本

azure-devops - 在自定义任务中访问 Azure DevOps 其他部分的身份验证