1

因此,我正在创建这个应用程序,它允许您构建 Windows 窗体应用程序,而无需使用 Visual Studio 构建,而只需通过代码来完成。

如果我忘记了其他类以及主类必须运行“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 类,如下所示。

我几乎可以肯定,编译它并找到类的实际代码有问题,而不是这些类,但出于疑问,我还是将它们链接起来:

编译 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);
4

1 回答 1

0

问题是生成的程序集中没有调用类RunLauncher。你想要的类被称为kjpUnityGameLauncherTemplate.RunLauncher,所以这就是你需要设置的MainClass

parameters.MainClass = "kjpUnityGameLauncherTemplate.RunLauncher";
于 2013-10-29T09:24:49.260 回答