0

別の Windows フォーム アプリケーションを作成できる Windows フォーム アプリケーションを作成しようとしています。しかし、C# コードで CodeDom を使用してコンパイルしようとしたときに発生するエラーは、奇妙なものです。

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

クラス「RunLauncher」には main メソッドがあり、( http://msdn.microsoft.com/ ) サイトで説明されているデフォルトのセットアップがあるため、これはちょっと混乱します。

RunLauncher クラス: http://pastebin.com/NU3VYwpv (main メソッドがある)

これを実際にコンパイルするために使用しているコード。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」などの宣言など、他にもいくつかありますが、この場合は問題ではないため、それらを含めませんでした。

4

1 に答える 1

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);
于 2013-10-29T19:34:03.543 に答える