0

所以我试图通过 C#/CodeDom 脚本编译/构建一个可执行文件。

我正在尝试将新应用程序(要编译的应用程序)设置为其主要方法,以使用诸如 Application.Run() 之类的方法来实际运行 Windows 窗体应用程序。

我得到的错误:

原始类型 kjpUnityGameLauncherTemplate.Launcher 无效。因此,您应该考虑使用 CodeObjectCreateExpression。

我不明白,因为我被告知,这是我应该写的,运行这些方法。也有人告诉我 CodeEntryPointMethod 已经默认有 Main 方法,因此我只需要添加“Application.Run()”方法等,但这只是我听说的。

CodeTypeDeclaration class1 = new CodeTypeDeclaration("RunLauncher");

CodeEntryPointMethod start = new CodeEntryPointMethod();
CodeMethodInvokeExpression cs1 = new CodeMethodInvokeExpression(new CodeTypeReferenceExpression("Application"), "EnableVisualStyles");
CodeMethodInvokeExpression cs2 = new CodeMethodInvokeExpression(new CodeTypeReferenceExpression("Application"), "SetCompatibleTextRenderingDefault", new CodePrimitiveExpression(false));
CodeMethodInvokeExpression cs3 = new CodeMethodInvokeExpression(new CodeTypeReferenceExpression("Application"), "Run", new CodePrimitiveExpression(new Launcher()));

start.Statements.Add(cs1);
start.Statements.Add(cs2);
start.Statements.Add(cs3);

class1.Members.Add(start);

不得不说,在 Application.Run() 中运行的“new Launcher()”就像你有一个普通的 Program.cs 脚本,运行 Form1 类来运行应用程序一样。我希望这至少是有道理的。

4

1 回答 1

1

CodePrimitiveExpression用于类似intor的原语string。我认为你想要的是创建你的Launcher类的一个实例:

//new Launcher()
new CodeObjectCreateExpression( "Launcher", new CodeExpression[] {} )
于 2013-10-29T20:52:46.203 回答