我一直致力于自动化我们的构建过程,并希望找到一种轻松的方式来定期运行单元测试。为此,我编写了一个简单的应用程序,该应用程序检查项目文件并准备要测试的解决方案列表。原型的工作原理是测试以预期的结果执行,但是一旦我尝试重定向我的输出,应用程序就会在 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”
任何使用此模型解决此问题的建议将不胜感激。