2015-06-19 2 views
0

Я создал свой проект и теперь хочу скомпилировать его с помощью компилятора CodeDOM. У меня есть папка, полная файлов .CS, которые должны быть скомпилированы в EXE. Приложение должно быть консольным приложением, хотя он не запускает консоль. Ошибок здания нет. Ниже мой метод компиляции: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. Однако он не запускает консольное окно.

Любая идея? Возможно, консольное приложение требует определенных опций?

EDIT: Используя ILSpy, сборка, кажется, содержит ВСЕ классы и т. Д., Которые она должна иметь.

Заранее спасибо.

+0

Он создает .exe? И вы дважды щелкаете по .exe? Ничто из приведенного выше кода не говорит о том, что на самом деле запускает сборку ... –

+0

Выяснил это. Удалено/цель: winexe - теперь все работает отлично. – Roel

ответ

0

Я удалил/цель: winexe из CompilerOptions и теперь он работает.

Смежные вопросы