代码之家  ›  专栏  ›  技术社区  ›  DanDan

为.NET程序提供windows应用程序和控制台应用程序的输出类型

  •  7
  • DanDan  · 技术社区  · 14 年前

    我有一个C#应用程序,它有一个GUI,并将其输出类型设置为Windows应用程序。我还想从命令行(通过参数)调用它,因此它也需要是一个控制台应用程序。

    有没有办法让我的应用程序同时作为Windows应用程序和控制台应用程序运行?
    有没有办法在运行时设置,还是编译时设置?

    4 回复  |  直到 6 年前
        1
  •  8
  •   Hans Passant    14 年前

    您可以连接控制台。把代码放进去程序.cs像这样:

        [STAThread]
        static void Main(string[] args) {
            if (args.Length > 0) {
                AttachConsole(-1);
                Console.WriteLine("");
                Console.WriteLine("Running in console, press ENTER to continue");
                Console.ReadLine();
            }
            else {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Form1());
            }
        }
        [System.Runtime.InteropServices.DllImport("kernel32.dll")]
        private static extern bool AttachConsole(int pid);
    
        2
  •  1
  •   João Angelo    14 年前

    Windows窗体应用程序可以接受命令行参数。在显示应用程序主窗体之前,只需在主函数中处理此情况。

    static void Main(string[] args)
    {
        if (args.Length > 0)
        {
            // Run it without Windows Forms GUI
        }
        else
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new MainForm());
        }
    }
    
        3
  •  1
  •   Graham Clark    14 年前

    这是一个编译时设置:有一个 target: 上的选项 csc /target:winexe 构建一个Windows应用程序(即带有GUI); /target:exe 构建控制台应用程序。不过,这两种类型的应用程序都可以接受命令行参数。

        4
  •  0
  •   Bartłomiej Mucha    14 年前

    即使您的应用程序输出类型设置为Windows应用程序,您仍然可以从命令行调用它并传递参数。