Я работал над автоматизацией наших процессов сборки и хотел найти безболезненный способ регулярного запуска модульных тестов. Для этого я собрал простое приложение, которое проверяет файлы проекта и готовит список решений для тестирования. Прототип работает так, что тесты выполняются с ожидаемыми результатами, но как только я пытаюсь перенаправить вывод, приложение бомбит при вызове Process.Start, жалуясь на то, что файл не найден.
Я перепробовал несколько итераций того, что видел в других местах, включая несколько постов здесь, но мне еще предстоит заставить это работать должным образом.
Это работает:
Private Function WTF(ByVal aWorkingDirectory As String, ByVal aFileName As String, ByVal aArguments As String) As Boolean
Dim lProcess As New Process()
With lProcess
.StartInfo.WorkingDirectory = aWorkingDirectory
.StartInfo.FileName = aFileName
.StartInfo.Arguments = aArguments
End With
lProcess.Start()
lProcess.WaitForExit()
End Function
Это не работает:
Private Function WTF(ByVal aWorkingDirectory As String, ByVal aFileName As String, ByVal aArguments As String) As Boolean
Dim lProcess As New Process()
With lProcess
.StartInfo.CreateNoWindow = True
.StartInfo.UseShellExecute = False
.StartInfo.RedirectStandardOutput = True
.StartInfo.RedirectStandardError = True
.StartInfo.WorkingDirectory = aWorkingDirectory
.StartInfo.FileName = aFileName
.StartInfo.Arguments = aArguments
End With
lProcess.EnableRaisingEvents = True
AddHandler lProcess.OutputDataReceived, AddressOf blah
AddHandler lProcess.ErrorDataReceived, AddressOf blah
lProcess.Start()
lProcess.BeginOutputReadLine()
lProcess.BeginErrorReadLine()
lProcess.WaitForExit()
End Function
Private Shared Sub blah(ByVal sender As Object, ByVal e As System.Diagnostics.DataReceivedEventArgs)
Console.WriteLine(e.Data)
End Sub
"System.ComponentModel.Win32Exception: система не может найти указанный файл
в System.Diagnostics.Process.StartWithCreateProcess (ProcessStartInfo startInfo)
в System.Diagnostics.Process.Start () ... Ядда Ядда Ядда "
Буду признателен за любые предложения по решению этой проблемы с использованием этой модели.