作为预生成事件执行PowerShell脚本失败
Executing PowerShell script as pre-build event fails
我正在处理一个相当大的JavaScript项目,该项目嵌入到ASP.NET MVC项目中。我已经将JS代码分成了几个(12 ish)文件,以便更容易地处理代码。问题是,我已经失去了IntelliSense,而且,我需要链接页面上的几个文件。出现了这样一个想法:让我们制作一个PS脚本,将文件连接到一个文件中。它工作得很好,我只引用该文件,所以我有IntelliSense,而且,我只需要将该文件链接到页面中。但是,我需要在每次构建时手动运行该脚本。因此,下一个想法是设置一个预构建事件来运行脚本。问题来了,脚本没有成功运行。
这是脚本:
if(Test-Path myprefix-concatenated.js){
Remove-Item myprefix-concatenated.js
}
cat myprefix-*.js > concatenated.js
Rename-Item -path concatenated.js -newname myprefix-concatenated.js
以下是预构建事件:
powershell.exe -file "$(ProjectDir)'Scripts'my-scripts'concat.ps1"
这是构建的输出:
3> Get-Content : An object at the specified path myprefix-* does not exist, or has been
3> filtered by the -Include or -Exclude parameter.
3> At ...'Scripts'my-scripts'concat.ps1:4 char:4
3> + cat <<<< myprefix-* > concatenated.js
3> + CategoryInfo : ObjectNotFound: (System.String[]:String[]) [Get-
3> Content], Exception
3> + FullyQualifiedErrorId : ItemNotFound,Microsoft.PowerShell.Commands.GetCo
3> ntentCommand
在此之后,构建成功,但不会发生串联。如果我手动运行脚本,它会起作用。你知道是什么原因导致了这个问题,以及如何解决它吗?提前感谢!
我不会假设当前目录的设置如您所期望的那样。您使用的是相对路径,这可能不是一个好主意。您可以将路径作为参数传递给脚本,例如
powershell.exe -file "$(ProjectDir)'Scripts'my-scripts'concat.ps1" "$(ProjectDir)"
-- concat.ps1 --
param($projectDir)
if (Test-Path $projectDir'Scripts'my-scripts'myprefix-concatenated.js) {
Remove-Item $projectDir'Scripts'my-scripts'myprefix-concatenated.js
}
cat $projectDir'Scripts'my-scripts'myprefix-*.js > $projectDir'Scripts'my-scripts'concatenated.js
Rename-Item $projectDir'Scripts'my-scripts'concatenated.js -newname $projectDir'Scripts'my-scripts'myprefix-concatenated.js
如果您使用PowerShell v3,则可以使用$PSScriptRoot自动变量引用相对于concat.ps1脚本所在位置的文件,例如:
if (Test-Path $PSScriptRoot'myprefix-concatenated.js) {
Remove-Item $PSScriptRoot'myprefix-concatenated.js
}
cat $PSScriptRoot'myprefix-*.js > $PSScriptRoot'concatenated.js
Rename-Item $PSScriptRoot'concatenated.js -newname $PSScriptRoot'myprefix-concatenated.js
相关文章:
- 无法在通过jQuery的ajax加载的页面中执行javascript
- JavaScript执行暂时挂起页面
- 如何在ReactJS JSX中执行嵌套的if-else语句
- 当js函数's已执行
- 哪个先执行
- 在使用Polymer'加载所有json文件后执行方法;s的核心ajax
- HTML表单提交时未执行外部函数
- 在Safari执行javascript之前对其进行修改
- Amd,希望确保某个东西总是最后执行
- 在Windows 10中自动执行例行程序(主要与浏览器交互)
- 递归使用 eval() 是检查程序执行的好方法吗?
- 如何做到这一点,使代码在不传递条件后执行函数
- 如何在执行此特定onclick事件时执行JavaScript函数
- 如何在从浏览缓存加载页面时执行javascript
- Jquery表单验证插件-如果选中复选框,如何在提交时执行某些操作
- Jquery:代码在rails中的页面加载时未执行
- 作为预生成事件执行PowerShell脚本失败
- 使用grunt-exec和powershell执行linkchecker.exe
- 如何使用SystemWorker执行PowerShell命令
- 直接从PowerShell执行Javascript事件