C# CodeDom未链接主类
因此,我正在创建这个应用程序,它允许您构建一个Windows窗体应用程序,而无需使用Visual Studio构建,只需通过代码即可 如果我忘记了其他类以及主类必须对另一个类运行“Application.run();”这一事实,它就可以正常工作 我的问题是,它说:C# CodeDom未链接主类,c#,.net,winforms,compilation,codedom,C#,.net,Winforms,Compilation,Codedom,因此,我正在创建这个应用程序,它允许您构建一个Windows窗体应用程序,而无需使用Visual Studio构建,只需通过代码即可 如果我忘记了其他类以及主类必须对另一个类运行“Application.run();”这一事实,它就可以正常工作 我的问题是,它说: Could not find 'RunLauncher' specified for Main method 我有几个剧本。第一个是标准C#脚本,它包含运行Windows窗体C#脚本的主方法,通过。Application.Run()
Could not find 'RunLauncher' specified for Main method
我有几个剧本。第一个是标准C#脚本,它包含运行Windows窗体C#脚本的主方法,通过。Application.Run()方法。此Windows形成C#脚本,然后将另一个类作为对象链接到它(在Load方法中创建),因此总共有3个脚本需要编译到新的可执行文件中
运行方法Application.Run()以运行Windows窗体应用程序的主类“RunLauncher”运行Launcher类,如下所示
我几乎可以肯定,编译它并找到类的实际代码有问题,而不是这些类,但出于怀疑,我还是链接了它们:
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);
- 新可执行文件的主类|
- 启动程序Winform C#Class|
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);
问题是生成的程序集中没有名为
RunLauncher
的类。您想要的类被称为kjpUnityGameLauncherTemplate.RunLauncher
,因此这就是您需要在main类中设置的:
parameters.MainClass = "kjpUnityGameLauncherTemplate.RunLauncher";
它解决了上面的错误,但是,现在我仍然有一个类似的错误:您对问题的编辑显著地改变了您所问的内容,并使现有的答案无效。堆栈溢出不是这样工作的。如果你有一个新问题,那就很公平了。创建了一个新问题(与此目的基本相同),但如果这就是Stackoverflow的工作原理,我不会更改:)无论如何,感谢您的帮助。