簡體   English   中英

如何防止在控制台中打開我動態生成的exe

[英]how to prevent to open in console my dynamically generated exe

我在c#4.0中工作,我想動態生成一個可執行文件,所以我使用了Code Dome,但是當我在控制台中執行它並在窗體顯示后打開它時,我想生成winform可執行文件。 我如何實現我的目標。 代碼如下:

string Code = @"
using System;
using System.Windows.Forms;

namespace CSBSS
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}

public class Form1 : Form
{
}
}

";

CodeDomProvider codeProvider = CodeDomProvider.CreateProvider("CSharp");

string tempFolder = @"..\DynamicOutput";
string Output = System.IO.Path.Combine(tempFolder, @"CSBSS.exe");
if (!System.IO.Directory.Exists(tempFolder))
{
    System.IO.Directory.CreateDirectory(tempFolder);
}
else
{
    if (System.IO.File.Exists(Output)) System.IO.File.Delete(Output);
}

System.CodeDom.Compiler.CompilerParameters parameters = new CompilerParameters();
parameters.ReferencedAssemblies.Add("System.dll");
parameters.ReferencedAssemblies.Add("System.Windows.Forms.dll");

parameters.TempFiles = new TempFileCollection(tempFolder, false);
//Make sure we generate an exe.
parameters.GenerateExecutable = true;
parameters.GenerateInMemory = false;
parameters.OutputAssembly = Output;


CompilerResults results = codeProvider.CompileAssemblyFromSource(parameters, Code);

string OutputMsg = "";
if (results.Errors.Count > 0)
{
    string msgDescr = "";
    foreach (CompilerError CompErr in results.Errors)
    {
        msgDescr += "Line number " + CompErr.Line +
                    ", Error Number: " + CompErr.ErrorNumber +
                    ", '" + CompErr.ErrorText + ";" +
                    Environment.NewLine + Environment.NewLine;
    }
    OutputMsg = @"Error occured while generating executable file, please check following internal error 
" + msgDescr;
    //return false;
}
else
{
    OutputMsg = "Executable file has been generated successfully.";
}

通過使用CompilerOptions將輸出類型指定為Windows應用程序

parameters.CompilerOptions = "/target:winexe";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM