1

Я работаю в C# 4.0, я хочу сгенерировать исполняемый файл динамически, поэтому я использовал Code Dome, но когда я его запускаю в консоли, и после этого отображаются мои формы , я хочу сгенерировать исполняемый файл winform. Как я могу достичь своей цели. код ниже:Как предотвратить открытие в консоли моего динамически генерируемого exe

string Code = @" 
using System; 
using System.Windows.Forms; 

namespace CSBSS 
{ 
static class Program 
{ 
/// <summary> 
/// The main entry point for the application. 
/// </summary> 
[STAThread] 
static void Main() 
{ 
Application.EnableVisualStyles(); 
Application.SetCompatibleTextRenderingDefault(false); 
Application.Run(new Form1()); 
} 
} 

public class Form1 : Form 
{ 
} 
} 

"; 

CodeDomProvider codeProvider = CodeDomProvider.CreateProvider("CSharp"); 

string tempFolder = @"..\DynamicOutput"; 
string Output = System.IO.Path.Combine(tempFolder, @"CSBSS.exe"); 
if (!System.IO.Directory.Exists(tempFolder)) 
{ 
    System.IO.Directory.CreateDirectory(tempFolder); 
} 
else 
{ 
    if (System.IO.File.Exists(Output)) System.IO.File.Delete(Output); 
} 

System.CodeDom.Compiler.CompilerParameters parameters = new CompilerParameters(); 
parameters.ReferencedAssemblies.Add("System.dll"); 
parameters.ReferencedAssemblies.Add("System.Windows.Forms.dll"); 

parameters.TempFiles = new TempFileCollection(tempFolder, false); 
//Make sure we generate an exe. 
parameters.GenerateExecutable = true; 
parameters.GenerateInMemory = false; 
parameters.OutputAssembly = Output; 


CompilerResults results = codeProvider.CompileAssemblyFromSource(parameters, Code); 

string OutputMsg = ""; 
if (results.Errors.Count > 0) 
{ 
    string msgDescr = ""; 
    foreach (CompilerError CompErr in results.Errors) 
    { 
     msgDescr += "Line number " + CompErr.Line + 
        ", Error Number: " + CompErr.ErrorNumber + 
        ", '" + CompErr.ErrorText + ";" + 
        Environment.NewLine + Environment.NewLine; 
    } 
    OutputMsg = @"Error occured while generating executable file, please check following internal error 
" + msgDescr; 
    //return false; 
} 
else 
{ 
    OutputMsg = "Executable file has been generated successfully."; 
} 

ответ

2

Определяет тип вывода, чтобы быть Windows application с помощью CompilerOptions:

parameters.CompilerOptions = "/target:winexe"; 
+0

Готово. это то, что мне нужно –

Смежные вопросы