Я создал свой проект и теперь хочу скомпилировать его с помощью компилятора 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, сборка, кажется, содержит ВСЕ классы и т. Д., Которые она должна иметь.
Заранее спасибо.
Он создает .exe? И вы дважды щелкаете по .exe? Ничто из приведенного выше кода не говорит о том, что на самом деле запускает сборку ... –
Выяснил это. Удалено/цель: winexe - теперь все работает отлично. – Roel