如何使用CSharpCodeProvider获取写入控制台的内容

时间:2017-10-21 16:34:42

标签: c# csharpcodeprovider

我使用以下命令在运行时编译C#:

CompilerParameters parameters = new CompilerParameters
        {
            GenerateInMemory = true,
            GenerateExecutable = true,
            IncludeDebugInformation =  true
        };


        // True - memory generation, false - external file generation
        // True - exe file generation, false - dll file generation

        var res = pro.CompileAssemblyFromSource(parameters,
            code);

        Assembly assembly = res.CompiledAssembly;
        Type program = assembly.GetType("First.Program");
        MethodInfo main = program.GetMethod("Main");
        var invoke = main?.Invoke(null, null);

res.Output是一个空列表,如果代码有Console.WriteLine(),它会被写入主应用程序的控制台;我想抓住写的东西。

1 个答案:

答案 0 :(得分:0)

您还应该检查res.Errors。如果有错误,那么他们就会在那里。如果ErrorsOutput都为空,那么您可能已成功编译而没有任何输出。检查:cr.NativeCompilerReturnValue.ToString()