找不到合适的Main方法

时间:2013-10-29 19:13:17

标签: c# .net class compiler-construction codedom

我正在尝试创建一个Windows窗体应用程序,它可以创建另一个Windows窗体应用程序。但是当我尝试使用c#代码中的CodeDom进行编译时,我得到的错误是一个奇怪的错误。

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

这种方式让我感到困惑,因为“RunLauncher”类有一个主方法,在(http://msdn.microsoft.com/)网站上描述了默认设置。

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”等,但在这种情况下这些不是问题,这就是为什么我没有包含它们。

1 个答案:

答案 0 :(得分: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);