C# 编译器参数。生成内存

C# 编译器参数。生成内存,c#,reflection,assemblies,codedom,C#,Reflection,Assemblies,Codedom,嗨,我想在运行时使用CodeDom编译一个类并在内存中生成。如何从内存中运行编译后的代码 我的文本文件资源: using System.IO; using System; namespace Exe_From_Memory { static class MemoryExe { static void Main() { string strText = "[TEXT]"; Console.WriteL

嗨,我想在运行时使用CodeDom编译一个类并在内存中生成。如何从内存中运行编译后的代码

我的文本文件资源:

using System.IO;
using System;

namespace Exe_From_Memory
{
    static class MemoryExe
    {
        static void Main()
        {
            string strText = "[TEXT]";
            Console.WriteLine(strText);
            Console.Read();
        }
    }
}
我编译文本文件的实际应用程序

private void exeButton_Click(object sender, EventArgs e)
{
    string text = textBox1.Text;
    string source;

    source = Properties.Resources.MemoryExe;
    source = source.Replace("[TEXT]", text);

    CompilerParameters _CompilerParameters = new CompilerParameters();

    _CompilerParameters.ReferencedAssemblies.Add("System.dll");
    _CompilerParameters.GenerateExecutable = true;
    _CompilerParameters.GenerateInMemory = true;

    _CompilerParameters.IncludeDebugInformation = false ;

    CSharpCodeProvider _CSharpCodeProvider = new CSharpCodeProvider();
    CompilerResults _CompilerResults = _CSharpCodeProvider.CompileAssemblyFromSource(_CompilerParameters, source);

    Assembly _Assembly = _CompilerResults.CompiledAssembly;
    MethodInfo mi = _Assembly.EntryPoint;
    object o = _Assembly.CreateInstance(mi.Name);
    mi.Invoke( o, null);

    foreach (CompilerError _CompilerError in _CompilerResults.Errors)
    {
        MessageBox.Show(_CompilerError.ToString());
    }
}
调试器只是说: 'Exe From Memory.vshost.Exe'(托管):加载了'r8ztr3t0' 既然它已加载,为什么控制台窗口不显示?

所有的
Invoke()
都是调用该方法,它不会创建新的应用程序。而且,由于您运行的是一个没有控制台的windows应用程序,因此不会在任何地方写入文本

如果要从应用程序中显示控制台窗口