我已根据ConfigurationName为我复制文件设置了后期构建事件,并且希望能够在角度应用程序的客户端上的config(js)文件中设置“环境变量”以允许调试信息可见或不依赖于环境运行应用程序。
为此,我创建了一个powershell脚本(ReplaceText.ps1):
function replace-file-content([String] $path, [String] $replace, [String] $replaceWith)
{
(Get-Content $path) | Foreach-Object {$_ -replace $replace,$replaceWith} | Out-File $path
}
并将此行添加到我的Web项目的post build事件中。
if "$(ConfigurationName)"=="LIVE" (powershell -File "$(ProjectDir)Tools\ReplaceText.ps1" "$(ProjectDir)app\application.config.js" "DEBUG" "LIVE")
我希望在我的application.config.js文件中针对LIVE构建配置构建时将“DEBUG”更改为“LIVE”,该文件包含以下行:
$provide.constant('currentEnv', 'DEBUG');
构建成功但我的文件没有发生任何变化。任何人都可以确定我哪里出错了吗?
我知道我可以用Gulp或其他任务运行员BTW做这种事情,但是试图在没有引入另一个依赖项的情况下这样做,只使用VS post build事件& PS。 :)
干杯
答案 0 :(得分:1)
你的PS代码只定义了一个函数,但没有任何函数可以调用它。
使用param
作为脚本中的第一个语句,将命令行转换为脚本的参数:
param([String] $path, [String] $replace, [String] $replaceWith)
(Get-Content -literalPath $path -raw) -replace $replace, $replaceWith |
Out-File $path -encoding UTF8
-literalPath
- 正确处理带有[]
符号的路径,否则将其解释为通配符; -raw
- 将整个文件作为一个加速字符串读取,自PowerShell 3起可用。