powershell - 在自定义 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 Company Name”
尽管在我的本地计算机上,我的 PowerShell 为 [char]0x00A9 提供了“©”符号。
有什么建议么?
解决方案
我可以重现这个问题。
似乎日志记录命令无法识别符号©。所以我们不能通过下面的命令将包含©的变量设置为值:
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)
来检查它是否有效。
推荐阅读
- git - GitLab:孤儿分支的 GUI 选项
- tomcat - 在 Tomcat 而不是 Jetty 中本地运行时,Vaadin 14.0.5 无法找到“npm”(Node.js)
- git - git commit --date 中的未来相对日期格式
- python - 如何在 pyplot 中使用 Line Collection
- c# - 创建与 AspNetUsers 表的关系
- java - 当我只想并发阅读时,是否必须同步 ConsumerRecords?
- php - 检查数据库表的记录,是否与数据匹配
- node.js - 如何在 NodeJS App Engine 实例中正确池化 MongoDB 连接?
- clang - Cocoapods linting 错误:子模块中的 C++ 导入“没有这样的模块”
- java - 替代 thread.sleep() - amazon selenium webdriver 添加到购物车忽略保险对话框