저는 빌드 프로세스를 자동화하고 있으며 단위 테스트를 정기적으로 실행하는 데 어려움을 겪고 싶었습니다. 이를 위해 프로젝트 파일을 검사하고 테스트 할 솔루션 목록을 준비하는 간단한 응용 프로그램을 작성했습니다. 프로토 타입은 테스트가 예상 된 결과와 함께 실행된다는 점에서 작동하지만, 출력을 리디렉션하려고하면 파일을 찾을 수 없다는 불평을하면서 Process.Start 호출에 응용 프로그램 폭탄이 생깁니다.출력을 리디렉션하려고 할 때 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) at System.Diagnostics.Process.Start() ... yadda yadda yadda "
모든 sugges 이 모델을 사용하여이 문제를 해결할 수 있습니다.
오류가 발생하면 'a 파일 이름'을 찾을 수 없습니다. – Gonzalo