我有一些代码可以使用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应用程序。那么我如何通过上面粘贴的功能来做到这一点?我已经查看了所有选项但是......不知道:(
感谢。
答案 0 :(得分:3)
试试这个:
compilerparams.CompilerOptions = "/target:winexe";