このアプリケーションを作成すると、Visual Studio Build を使用せずに、コードを使用して Windows フォーム アプリケーションをビルドできます。
他のクラスと、メインクラスが「Application.Run();」を実行する必要があるという事実を忘れても、問題なく動作します。別のクラスに。
私の問題は、それが次のように言っていることです:
Could not find 'RunLauncher' specified for Main method
私はいくつかのスクリプトを持っています。最初のものは標準の C# スクリプトで、Main メソッドを含み、Windows フォーム C# スクリプトを実行します。Application.Run() メソッド。この Windows フォーム C# スクリプトには、別のクラスがオブジェクト (Load メソッドで作成) としてリンクされているため、基本的に合計 3 つのスクリプトがあり、新しい実行可能ファイルにコンパイルする必要があります。
メソッド Application.Run() を実行して Windows フォーム アプリケーションを実行するメイン クラス「RunLauncher」は、以下に示す Launcher クラスを実行します。
これらのクラスではなく、実際のコードをコンパイルしてクラスを見つけるのに何か問題があることはほぼ確実ですが、疑念のために、とにかくそれらをリンクしました:
- 新しい実行可能ファイルのメイン クラス | http://pastebin.com/NU3VYwpv
- ランチャー Winform C# クラス | http://pastebin.com/gQwV923g
CodeDom コードのコンパイル:
CSharpCodeProvider codeProvider = new CSharpCodeProvider();
ICodeCompiler icc = codeProvider.CreateCompiler();
string Output = game_filename.Text + ".exe";
Button ButtonObject = (Button)sender;
System.CodeDom.Compiler.CompilerParameters parameters = new CompilerParameters();
parameters.GenerateExecutable = true;
parameters.OutputAssembly = Output;
parameters.ReferencedAssemblies.Add("System.Windows.Forms.dll");
parameters.ReferencedAssemblies.Add("System.dll");
parameters.ReferencedAssemblies.Add("System.IO.Compression.dll");
parameters.ReferencedAssemblies.Add("System.IO.Compression.FileSystem.dll");
if (codeProvider.Supports(GeneratorSupport.EntryPointMethod))
{
parameters.MainClass = "RunLauncher";
}
CodeCompileUnit compileUnits = new CodeCompileUnit();
CodeNamespace nsp = new CodeNamespace("kjpUnityGameLauncherTemplate");
compileUnits.Namespaces.Add(nsp);
nsp.Imports.Add(new CodeNamespaceImport("kjpUnityGameLauncherTemplate"));
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);
CompilerResults results = icc.CompileAssemblyFromDom(parameters, compileUnits);