Process.start () Система не может найти указанный файл - PullRequest
0 голосов
/ 13 декабря 2018

прежде чем пометить этот вопрос как дубликат, пожалуйста, прочтите его - я прочитал все подобные вопросы, но моя проблема другая.

При запуске процесса я получаю исключение The System cannot find the file specified

Это исключение возникает только при перенаправлении StandardOutput.В строке 15 кода я определил решение, перенаправлен ли стандартный вывод.Пожалуйста, найдите код ниже:

        Public Shared Function XPStoPDF(ByVal Input As String, ByVal Output As String, ByVal Executable As String) As String
        Dim StartupInfo As New System.Diagnostics.ProcessStartInfo()
        Dim p As System.Diagnostics.Process = Nothing

        If Not System.IO.File.Exists(Input) Then Throw New System.Exception("Error: Inputfile " & Input & " not found!")
        If Not System.IO.File.Exists(Executable) Then Throw New System.Exception("Error: GhostScriptfile " & Executable & " not found!")
        If Not System.IO.Directory.Exists(System.IO.Path.GetDirectoryName(Output)) Then Throw New System.Exception("Error: Output path " & System.IO.Path.GetDirectoryName(Output) & " not found!")

        Try
            StartupInfo.FileName = System.IO.Path.GetFileName(Executable)
            StartupInfo.WorkingDirectory = System.IO.Path.GetDirectoryName(Executable)
            StartupInfo.Arguments = " -sDEVICE=pdfwrite -sOutputFile=" & Output & " -dNOPAUSE " & Input

#Region "Switch for standardoutput export"
            If True Then 'Change to False and the code works!!!
#End Region
                StartupInfo.UseShellExecute = False
                StartupInfo.RedirectStandardOutput = True

                Dim CommandlineOutput As String = System.Diagnostics.Process.Start(StartupInfo).StandardOutput.ReadToEnd() '<---Exception thrown
                Return CommandlineOutput
            Else
                System.Diagnostics.Process.Start(StartupInfo)
                Return String.Empty
            End If
        Catch ex As System.Exception
            Throw New System.Exception("Error converting XPS File to PDF!" & System.Environment.NewLine & "Error details: " & ex.Message)
        End Try
    End Function

У кого-нибудь есть идеи, что не так с перенаправлением стандартного выходного контента?

Заранее спасибо, Ян

1 Ответ

0 голосов
/ 13 декабря 2018

Хорошо, я нашел решение.Я не знаю почему, но при использовании UseShellExecute = False полное имя файла с путем должно быть определено для Filename. Если я использую UseShellExecute = True, полное имя файла должно быть разделено на рабочий каталог и имя файла.

...