我一直对我们的自动化构建过程,并想拿出一个无痛的方式定期运行单元测试。为此我已经一起引发一个简单的应用程序,检查项目文件并准备解决方案测试的名单。工程样机在试验与预期结果执行,但只要我努力我重定向输出上的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()... yadda脚本非常重要“

用于解决该使用该模型的任何建议,将不胜感激。

有帮助吗?

解决方案

UseShellExecute导致在不同的地方进行寻找该文件。

MSDN

在WorkingDirectory属性表现不同时UseShellExecute比当UseShellExecute是假真。当UseShellExecute为真,WorkingDirectory属性指定可执行文件的位置。如果WorkingDirectory为空字符串,则当前目录被理解为包含可执行文件。

当UseShellExecute是假的,WorkingDirectory属性不被用于找到可执行。相反,它是用来通过被启动,并且只有新进程的上下文中有意义的过程。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top