Отображение прогресса окна вывода

У меня есть проект с несколькими командами событий после сборки. Выполнение этих команд занимает некоторое время, а также имеет консольный вывод. Если это имеет значение, команды представляют собой команды/скрипты PowerShell. Я обнаружил, что Visual Studio будет действовать так, как будто он не отвечает во время выполнения команд. После выполнения всех команд весь вывод отображается в окне вывода в VS после завершения сборки. Я бы хотел, чтобы окно вывода отображало вывод консоли, как это происходит, поэтому при запуске моих сценариев я видел бы «Начало выполнения команды…», «Команда 1 завершена, команда начала 2...», что-то вроде тот. Это возможно?

Вот как выглядят мои команды событий после сборки:

if "$(ConfigurationName)" == "Release" "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" Set-ExecutionPolicy Unrestricted
if "$(ConfigurationName)" == "Release" "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -file "$(SolutionDir)\installshieldAutomationScript.ps1"
if "$(ConfigurationName)" == "Release" "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" Set-ExecutionPolicy Restricted

Вот фрагмент моего сценария PowerShell:

Write-Host "Running post-build script..." -ForegroundColor "Green"

#Do a bunch of stuff here
Write-Host "Post-build script complete!" -ForegroundColor "Cyan"

person HotN    schedule 12.06.2013    source источник
comment
Я обновил свой вопрос и добавил фрагменты кода.   -  person HotN    schedule 12.06.2013
comment
@ Иветт, я еще не придумал отличного решения, если вы все еще заинтересованы в этой задаче. Я мог бы вернуться к ответу Мередит, но мне кажется, что ответ будет включать создание дополнительных окон, что кажется противоречащим цели использования окна вывода для отображения вывода по сценарию.   -  person HotN    schedule 13.06.2013


Ответы (1)


Можете ли вы поместить «[System.Windows.Forms.Application]::DoEvents()» между командами PowerShell? Без этого вы не позволяете обработчику событий формы обрабатывать перерисовку между каждой командой. Вам это понадобится сразу после строки Write-Host.

Я вижу здесь хорошую запись: Действие события задания Powershell с формой не Выполнено

person Meredith Poor    schedule 12.06.2013
comment
Это не сработало. Я предполагаю, что это потому, что Visual Studio не является приложением WinForms? - person HotN; 12.06.2013
comment
Ссылка, приведенная выше, показывает полный процесс. В основном вы включаете библиотеку System.Windows.Forms и создаете экземпляр формы Windows с помощью командной кнопки. Просто добавление DoEvents() само по себе мало что даст. - person Meredith Poor; 13.06.2013