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