0

我有一些代码可以使用 CSharpCodeProvider 即时从 c# 源创建 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 应用程序。那么我将如何通过我上面粘贴的功能来做到这一点?我已经浏览了所有选项,但.. 不知道 :(

谢谢。

4

1 回答 1

3

尝试这个:

compilerparams.CompilerOptions = "/target:winexe";
于 2012-11-03T18:41:43.070 回答