我使用以下命令在运行时编译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()
,它会被写入主应用程序的控制台;我想抓住写的东西。
答案 0 :(得分:0)
您还应该检查res.Errors
。如果有错误,那么他们就会在那里。如果Errors
和Output
都为空,那么您可能已成功编译而没有任何输出。检查:cr.NativeCompilerReturnValue.ToString()