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

463
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

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

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

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

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

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

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

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

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

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

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

898