CSharpCodeProvider输出控制台应用程序作为Windows窗体应用程序

时间:2012-11-03 17:35:25

标签: c# .net

我有一些代码可以使用CSharpCodeProvider在c#source中即时创建一个exe,这里是:

public static void BuildAssembly(string code)
{
    Microsoft.CSharp.CSharpCodeProvider provider =
    new CSharpCodeProvider();
    ICodeCompiler compiler = provider.CreateCompiler();
    CompilerParameters compilerparams = new CompilerParameters();

    compilerparams.ReferencedAssemblies.Add("System.dll");
    compilerparams.GenerateExecutable = true;
    compilerparams.GenerateInMemory = false;
    compilerparams.OutputAssembly = @"C:\Users\me\AppData\Roaming\test.exe";
    CompilerResults results =
       compiler.CompileAssemblyFromSource(compilerparams, code);
    if (results.Errors.HasErrors)
    {
        StringBuilder errors = new StringBuilder("Compiler Errors :\r\n");
        foreach (CompilerError error in results.Errors)
        {
            errors.AppendFormat("Line {0},{1}\t: {2}\n",
                   error.Line, error.Column, error.ErrorText);
        }
        throw new Exception(errors.ToString());
    }
    else
    {

    }
}

一切正常,它编译我的控制台应用程序c#代码。但是,当我正在编写控制台应用程序并且我要求控制台不可见时,我只需转到应用程序属性并将输出类型从控制台更改为Windows应用程序。那么我如何通过上面粘贴的功能来做到这一点?我已经查看了所有选项但是......不知道:(

感谢。

1 个答案:

答案 0 :(得分:3)

试试这个:

compilerparams.CompilerOptions = "/target:winexe";