CodeDOM 编译没有错误,但无法启动控制台

本文关键字:启动 控制台 编译 有错误 CodeDOM | 更新日期: 2023-09-27 17:57:06

我已经创建了我的项目,现在想使用 CodeDOM 编译器进行编译。我有一个文件夹,里面装满了应该编译为 EXE 的.CS文件。该应用程序应该是控制台应用程序,尽管它无法启动任何控制台。没有建筑错误。以下是我的编译方法:

public static void Build(string AssemblyName, string OutputDirectory, string[] SourceFiles)
        {
            CodeDomProvider codeProvider = CodeDomProvider.CreateProvider("CSharp");
            CompilerParameters parameters = new CompilerParameters();
            parameters.GenerateExecutable = true;
            parameters.GenerateInMemory = false;
            parameters.ReferencedAssemblies.Add("System.dll");
            parameters.ReferencedAssemblies.Add("System.Data.dll");
            parameters.ReferencedAssemblies.Add("System.Xml.dll");
            parameters.OutputAssembly = OutputDirectory + @"'" + AssemblyName + ".exe";
            parameters.CompilerOptions = "/unsafe /target:winexe /platform:x86";
            if (codeProvider.Supports(GeneratorSupport.EntryPointMethod))
            {
                parameters.MainClass = "MyApp.Program";
            }
            CompilerResults results = codeProvider.CompileAssemblyFromFile(parameters, SourceFiles);
            if (results.Errors.Count > 0)
            {
                foreach (CompilerError error in results.Errors)
                    Console.WriteLine(error.ErrorText);
            }
        }

string[] SourceFiles正确提供位于文件夹中的所有.CS文件(类、结构和枚举),如下所示:

"D:''Development''MyAppCodeDom''Program.cs"
"D:''Development''MyAppCodeDom''IniParser.cs"

还有 26 个。我不使用任何外部DLL文件作为参考。但是,它无法启动控制台窗口。

知道吗?也许控制台应用程序需要某些选项?

编辑:使用 ILSpy,程序集似乎包含它应该具有的所有类等。

提前谢谢你。

CodeDOM 编译没有错误,但无法启动控制台

我从编译器选项中删除了/target:winexe,现在它可以工作了。