1

나는 C# 4.0에서 작업하고 있는데, 나는 실행 파일을 동적으로 생성하기 때문에 코드 돔을 사용하지만, 콘솔에서 실행하면 그때부터는 내 양식이 표시된다. , 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

CompilerOptions를 사용하여 Windows application로 출력 형식을 지정 완료

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

. 이게 내가 원하는거야. –