Свойство Redirectstandarderror в startinfo процесса, используемое в отражении, не открывает окно консоли. - PullRequest
0 голосов
/ 16 июня 2020

У меня есть требование запустить процесс с использованием отражения. Ниже показан фрагмент кода, который я пытаюсь выполнить с помощью отражения.

Process newProcess = new Process();
ProcessStartInfo startInfo =new ProcessStartInfo(filepath);
startInfo.UseShellExecute = false;
startInfo.RedirectStandardError = true;
startInfo.CreateNoWindow=false;
newProcess.StartInfo = startInfo;
newProcess.Start();
newProcess.WaitForExit();

Компиляция: (Параметр «codeToExecute» имеет структуру класса с приведенным выше фрагментом кода, помещенным в метод)

private static CompilerResults CompileAndGetResult(SnippetInfo snippetInfo, string codeToExecute)
        {
            CompilerResults result = null;
            using (Microsoft.CSharp.CSharpCodeProvider foo =
             new Microsoft.CSharp.CSharpCodeProvider())
            {
                result = foo.CompileAssemblyFromSource(
                  new CompilerParameters(snippetInfo.References.ToArray())
                  {
                      GenerateInMemory = true
                  },
                  codeToExecute
               );
            }

            return result;
        }

Выполнение с использованием отражения:

var classType = result.CompiledAssembly.GetType(SnippetCodeGenerator.TypeName);
var classobj = Activator.CreateInstance(classType);
MethodInfo methodInfo = classType.GetMethod(SnippetCodeGenerator.MethodName);
object returnValue = methodInfo.Invoke(classobj, parameterArray);

Используя этот код, моя консоль не открывается. Если я удалю UseShellExecute и RedirectStandardError , Я смог увидеть консоль. Я также пробовал разные способы использования allocconsole, но, похоже, ничего не вышло.

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