Предоставление .NET программе выходного типа Windows-приложения и консольного приложения. - PullRequest
7 голосов
/ 06 сентября 2010

У меня есть приложение на C # с графическим интерфейсом и типом вывода, установленным как приложение Windows.Я также хотел бы вызвать его из командной строки (через параметры), и поэтому он также должен быть консольным приложением.

Есть ли способ заставить мое приложение работать и как приложение Windows, и как консольное приложение?
Есть ли способ установить это во время выполнения или это настройка времени компиляции?

Ответы [ 4 ]

8 голосов
/ 06 сентября 2010

Вы можете прикрепить консоль.Сделайте код в Program.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);
1 голос
/ 06 сентября 2010

Это параметр времени компиляции: в компиляторе csc есть опция target:./target:winexe создает приложение для Windows (т.е. с графическим интерфейсом);/target:exe создает консольное приложение.Оба типа приложений могут принимать аргументы командной строки.

1 голос
/ 06 сентября 2010

Приложение Windows Forms может принимать аргументы командной строки. Вам просто нужно разобраться с этим делом в своей основной функции, прежде чем показывать форму приложения.

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());
    }
}
0 голосов
/ 06 сентября 2010

Даже если тип вывода вашего приложения установлен как приложение Windows, вы все равно можете вызывать его из командной строки и передавать аргументы.

Просто измените определение метода Main на static void Main (string [] args) {...} и у вас есть доступ к переданным аргументам в переменной 'args'.

...