2013-10-29 4 views
0

다른 Windows Form 응용 프로그램을 만들 수있는 Windows Form 응용 프로그램을 만들려고합니다. 하지만 내가 C# 코드에서 CodeDom으로 컴파일하려고 할 때 나타나는 오류는 이상한 것입니다. 클래스 "RunLauncher"이 (http://msdn.microsoft.com/) 사이트에서 설명 된 기본 설정으로, 주요 방법이 없기 때문에적합한 기본 메서드를 찾을 수 없습니다.

'kjpUnityGameLauncherTemplate.RunLauncher' does not have a suitable static Main method 

이 좀 나를 혼란.

RunLauncher 클래스 : (주 메소드가)http://pastebin.com/NU3VYwpv 내가 실제로 통해이 컴파일 사용하고

코드입니다. 된 CodeDom은 이것이다 :

if (codeProvider.Supports(GeneratorSupport.EntryPointMethod)) 
{ 
    parameters.MainClass = "kjpUnityGameLauncherTemplate.RunLauncher"; 
} 

CodeCompileUnit compileUnits = new CodeCompileUnit(); 
CodeNamespace nsp = new CodeNamespace("kjpUnityGameLauncherTemplate"); 

parameters.CompilerOptions = "/main:kjpUnityGameLauncherTemplate.RunLauncher"; 

CodeTypeDeclaration class1 = new CodeTypeDeclaration("RunLauncher"); 
nsp.Types.Add(class1); 

CodeTypeDeclaration class2 = new CodeTypeDeclaration("kjpUnityGameLauncher"); 
nsp.Types.Add(class2); 

CodeTypeDeclaration class3 = new CodeTypeDeclaration("Launcher"); 
nsp.Types.Add(class3); 

nsp.Imports.Add(new CodeNamespaceImport("kjpUnityGameLauncherTemplate")); 
compileUnits.Namespaces.Add(nsp); 
CompilerResults results = icc.CompileAssemblyFromDom(parameters, compileUnits); 

는 변수 "codeProvider"등의 선언과 같은 다른 물건을 Theres는하지만 사람들은 내가 그들을 포함되지 않은 이유는이 경우에 문제가되지 않습니다.

+0

에있는 한 아래 나는 이것이 첫 번째 C# 윈도우 응용 프로그램 양식입니다 염치없는거야? – Goober

+1

생성 된 소스를 보여 주거나,'Main()'메소드를 생성하는 코드를 보여줍니다. – SLaks

+0

아니요, 새 .exe가 작동 할 때 새 Windows 양식 응용 프로그램을 컴파일하는 Windows 양식 응용 프로그램입니다. 첫 번째 앱의 버튼을 클릭하고 위의 "컴파일 코드"를 사용하고 새 애플리케이션의 새 기본 클래스를 사용하는 섹션입니다. 따라서 기본적으로 2 개의 Main 클래스가 있으며, 하나는 코드를 통해 생성 된 클래스에만 영향을 미칩니다. –

답변

1

실행 파일을 만들려면 코드에서 진입 점 메서드를 선언하고 으로 설정하여 CodeDom에서 실행해야합니다. 나는 당신의 위의 예에서 선언 한 것을 보지 못합니다. 내가 MSDN에서 예

http://msdn.microsoft.com/en-us/library/y2k85ax6.aspx

CodeEntryPointMethod start = new CodeEntryPointMethod(); 
CodeMethodInvokeExpression cs1 = new CodeMethodInvokeExpression(
new CodeTypeReferenceExpression("System.Console"), 
"WriteLine", new CodePrimitiveExpression("Hello World!")); 
start.Statements.Add(cs1); 
+0

메인 클래스를 작성하는 데 더 "자동화 된"방법이 있다는 것을 알지만, 여기에 있지 않습니까? CodeMethodInvokeExpressions를 많이 작성하는 대신 위의 예와 함께이 예를 들어 주시겠습니까? –

관련 문제