2015-06-19 80 views
0

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

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,程序集似乎包含所有的类,它应该有。

预先感谢您。

+0

它创建.exe?你双击.exe?上面列出的代码没有说实际运行程序集... –

+0

找出来了。删除/目标:winexe - 现在它工作得很好。 – Roel

回答

0

我从CompilerOptions中删除/目标:winexe,现在它工作。

相关问题