Вывод информации о выполнении в PowerShell

391
26 декабря 2016, 22:29

Добрый день. Имеется файл написанный на C#, например 'app.cs'. Необходимо скомпилировать этот файл через приложение в C#. Если компилятор выдаст выдаст ошибки компиляции, то необходимо перенаправить вывод в текстовый файл. Проблема такова, что из C# выполняется скрипт PowerShell в котором и запускается сам компилятор. Не совсем понимаю PowerShell, поэтому и обращаюсь к сообществу. Далее приведу код:

  • Код скрипта PowerShell

@"Start-Process -FilePath 'C:\Program Files\MSBuild\12.0\Bin\csc.exe' -ArgumentList 'app.cs' -Wait -NoNewWindow | Out-File -FilePath log.txt"

  • Код C#

    string script = ... // см. выше 
    Runspace runspace = RunspaceFactory.CreateRunspace();
    runspace.Open();
    Pipeline pipeline = runspace.CreatePipeline();
    pipeline.Commands.AddScript(script);   
    Collection<PSObject> result = pipeline.Invoke();
    runspace.Close();
    

p.s. Переменная result так же пустая.

Answer 1

Спасибо @rdorn. Необходимо было переопределить вывод. Ответ на PowerShell

$objectStartInfo = New-Object System.Diagnostics.ProcessStartInfo -Property @{
    "FileName" = "C:\Program Files\MSBuild\12.0\Bin\csc.exe"
    "Arguments" = "p1.cs"
    "UseShellExecute" = $false
    "RedirectStandardOutput" = $true
}
$processObject = New-Object System.Diagnostics.Process
$processObject.StartInfo = $objectStartInfo
Register-ObjectEvent -InputObject $processObject -EventName OutputDataReceived -action{
    $Event.SourceEventArgs.Data >> log.txt
}
$processObject.Start()
$processObject.BeginOutputReadLine()
READ ALSO
Обновление данных в таблице. Entity Framework

Обновление данных в таблице. Entity Framework

Есть сущности, получаемые вне контекстаИх нужно обновить в бд (если есть изменения)

688
Удаление элемента списка

Удаление элемента списка

Каким образом можно удалить элемент списка, зная лишь его значениеНапример,

485
данный ключ отсутствует в словаре

данный ключ отсутствует в словаре

Выдает ошибку "данный ключ отсутствует в словаре" при нажатии на Q,W

646
Unity. Загрузка спрайтов пользователем

Unity. Загрузка спрайтов пользователем

Возможно ли разработать приложение, которое предложит поля для загрузки собственных спрайтов пользователю? При загрузке спрайтов, они "привязываются"...

834