Приложение C # для Windows и консольное приложение, вызывающее различия в Process.Start () - PullRequest
0 голосов
/ 12 октября 2018

У меня есть оболочка C # GUI, которая использует Process.Start () для вызова различных сторонних сценариев Python (эти сценарии нельзя изменить).Соответствующий код:

Process process = new Process();
process.StartInfo.FileName = FileParserConstants.PYTHON_PATH; // Path to python exe
process.StartInfo.Arguments = FileParserConstants.SCRIPT_PATH + sInput; // Path to scripts with input script + arguments
process.StartInfo.UseShellExecute = false;
process.StartInfo.CreateNoWindow = true;
process.StartInfo.RedirectStandardOutput = true;

process.Start();
process.WaitForExit();

return process.StandardOutput.ReadToEnd().Trim();

Это кажется относительно простым и работает, когда мой тип проекта C # установлен на «Приложение Windows».Однако после переключения на «Консольное приложение», хотя ошибки нет, скрипты python не функционируют должным образом.

А именно, есть скрипт python, который принимает аргументы и вызывает exe для изменения заданных настроек.аргументы.Когда скрипт python вызывается из проекта, настроенного как консольное приложение, в исполняемом файле, вызываемом из питона, возникает «OSError: [WinError 6] дескриптор недопустимый» (эта ошибка обрабатывается в скриптах питона и регистрируется).Опять же, когда скрипт вызывается из проекта, настроенного как приложение Windows, он работает правильно.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...