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,程序集似乎包含所有的類,它應該有。
預先感謝您。
它創建.exe?你雙擊.exe?上面列出的代碼沒有說實際運行程序集... –
找出來了。刪除/目標:winexe - 現在它工作得很好。 – Roel