C # Выполнить приложение, используя Process.Start () в качестве параметров для cmd и активного RedirectStandardOutput - PullRequest
0 голосов
/ 03 июля 2018

Я использую Visual Studio Clickones и пытаюсь выполнить (.appref-ms) application и используя RedirectStandardOutput ...

Я должен использовать опцию "Prefer 32-bit", потому что я использую Access DB со строкой подключения как Provider=Microsoft.Jet.OLEDB.4.0.

Это мой код исполнения:

    var p = new Process();
    p.StartInfo = new ProcessStartInfo(@"C:\Users\hed-b\Desktop\PulserTester.appref-ms")
    {
        RedirectStandardOutput = true,
        UseShellExecute = false
    };
    p.Start();
    reportNumber = p.StandardOutput.ReadToEnd();
    p.WaitForExit();

Это ошибка, которую я получил

System.ComponentModel.Win32Exception: 'Указанный исполняемый файл не является допустимое приложение для этой платформы ОС. '

Редактирование

Посмотрев здесь, я вижу, что могу запустить его с помощью cmd

.Net Core 2.0 Process.Start выдает «Указанный исполняемый файл не является допустимым приложением для этой платформы ОС»

как

var proc = Process.Start(@"cmd.exe ",@"/c C:\Users\hed-b\Desktop\PulserTester.appref-ms")

Но как я могу использовать RedirectStandardOutput таким образом?

1 Ответ

0 голосов
/ 03 июля 2018

Похоже, вы собираетесь запустить CMD и выполнить команду, но ваш код просто пытается запустить эту команду как приложение.

Попробуйте что-то вроде этого.

    var p = new Process();
    p.StartInfo = new ProcessStartInfo(@"cmd.exe")
    {
        RedirectStandardOutput = true,
        UseShellExecute = false,
        Arguments = "/c C:\Users\hed-b\Desktop\PulserTester.appref-ms"
    };
    p.Start();
    reportNumber = p.StandardOutput.ReadToEnd();
    p.WaitForExit();

Использование блокировки ReadToEnd приостановит ваш поток во время выполнения этого кода и усложнит также сбор ошибок при выводе. Посмотрите на этот ответ для демонстрации неблокирующего решения, которое собирает как стандартные данные, так и стандартную ошибку: ProcessInfo и RedirectStandardOutput

...