Управляйте YUI Compressor с помощью PowerShell и записывайте синтаксические ошибки в файл .txt в виде сценария предварительной сборки Visual Studios

Итак, вкратце, у меня есть PowerShell, управляющий YUI Compressor, чтобы выполнить некоторое сжатие JS в рамках мероприятия перед сборкой Visual Studios. хотя синтаксические ошибки, вероятно, будут очень редкими, я хотел бы знать об этих ошибках, если они происходят, и со сценарием, который у меня сейчас запущен, я не смог заставить Visual Studio отображать ошибки в журнале сборки или в пусть сценарий powershell записывает любые ошибки, которые YUI выдает, в файл .txt для просмотра позже. (последнее было бы предпочтительнее)

Write-Host работает с $args

атрибут -R $args*.* /s

Get-ChildItem $args -include *.js -recurse -force | %{java -jar C:\Tools\yuicompressor-2.4.6\build\yuicompressor-2.4.6.jar ($.fullname) -o ($.fullname) --type js -- номунге}

Write-Host в сценарии PowerShell позволяет мне затем создать .txt с выводом, используя следующую команду в Visual Studios:

powershell.exe -file $(ProjectDir)....\PowerScripts\Pre_Build_Public.ps1›› «C:\Tools\Pre_Build_Report.txt» $(ProjectDir)Scripts

будет ли это работать с любыми ошибками, полученными от YUI?

Если необходимы дополнительные разъяснения, пожалуйста, дайте мне знать. Я хочу сделать это как можно проще, и спасибо, что нашли время, чтобы просмотреть это.


person ShowStopper    schedule 09.11.2011    source источник


Ответы (1)


Вы можете перенаправить поток stderr с помощью оператора 2>&1:

 powershell.exe -file "$(ProjectDir)....\PowerScripts\Pre_Build_Public.ps1" 2>&1 >> "C:\Tools\Pre_Build_Report.txt" "$(ProjectDir)Scripts"

Однако я считаю, что внутренняя обработка ошибок PowerShell не пишет в stderr. Вам нужно будет сделать это вручную. В конце вашего сценария Pre_Build_Public.ps1 я бы сделал что-то вроде:

 foreach( $err in $error )
 {
      Write-Output $err
 }

Это отправит каждую ошибку на стандартный вывод.

Похоже, PowerShell v3 будет поддерживать перенаправление внутреннего потока ошибок PowerShell.

person Aaron Jensen    schedule 08.12.2011