Как интегрировать справку С# в консольное приложение

Справочная информация (на основе моего первого вопроса): я хочу интегрировать в свой «GUI.exe» (написанный на С#) функцию справки. Затем, когда я хочу запустить в моем cmd -> "GUI.exe --h" функцию справки.

Попробовал сообщение stackoverflow: я попытался использовать это решение: Добавление - -help для консольного приложения C#.

static bool ShowHelpRequired(IEnumerable<string> args)
{
    return args.Select(s => s.ToLowerInvariant())
        .Intersect(new[] { "help", "/?", "--help", "-help", "-h" }).Any();
}

Текущая проблема:

Я не знаю, куда я могу интегрировать функцию помощи. Я не знаю, нужно ли настраивать конкретный параметр в моей Microsoft Visual Studio.

Заранее спасибо за вашу поддержку.


person Moha86B    schedule 16.08.2017    source источник
comment
Это не имеет ничего общего с Visual Studio. Вы должны включить этот код (возможно) в свой метод main( args ).   -  person Fildor    schedule 16.08.2017
comment
Спасибо за ваш ответ. Теперь не нужно думать о конфиге.   -  person Moha86B    schedule 16.08.2017
comment
Если GUI.exe не является консольным приложением, то сначала вам придется вызвать либо WinAPI AllocConsole(), либо AttachConsole(ATTACH_PARENT_PROCESS). Если вы решите подключиться к родительской консоли, обратите внимание, что CMD и PowerShell не ждут дочернего элемента, не являющегося консолью, по умолчанию в интерактивном режиме, поэтому ваш вывод может быть перемешан с выводом оболочки.   -  person Eryk Sun    schedule 16.08.2017


Ответы (1)


Вызовите ShowHelpRequired в своем основном методе:

    static void Main(string[] args)
    {

        if(ShowHelpRequired(args))
        {
            Console.WriteLine("Show help message here");
        }
    }
person Ali Ezzat Odeh    schedule 16.08.2017
comment
Спасибо за ваш пост. Когда я пытаюсь вызвать ShowHelpRequired в свой основной метод, я получаю один сбой (см. мой следующий пост) - person Moha86B; 16.08.2017
comment
статический класс Program { [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(новый GUI_Form()); } static void Main(string[] args) { if (ShowHelpRequired(args)) { Console.WriteLine(Показать справочное сообщение здесь); } } } - person Moha86B; 16.08.2017
comment
в вашем комментарии есть два основных метода, укажите сообщение об ошибке. - person Ali Ezzat Odeh; 16.08.2017
comment
Спасибо за ваш быстрый ответ. Сообщение об ошибке: скомпилируйте с параметром /main, чтобы указать тип, содержащий точку входа. - person Moha86B; 16.08.2017
comment
Я думаю, вы меня неправильно поняли, моя проблема, к сожалению, не решена - person Moha86B; 16.08.2017
comment
@Moha86B Moha86B, вам нужно иметь только один метод Main, поэтому удалите метод без параметров (в конечном итоге вставьте его содержимое внутрь метода с аргументами перед его удалением) и запустите. - person Rafalon; 16.08.2017
comment
@Rafalon спасибо за ваш комментарий. теперь я получаю эту ошибку => ошибка CS0103: имя «ShowHelpRequired» не существует в текущем контексте - person Moha86B; 16.08.2017
comment
@ Moha86B, конечно, вам нужно добавить метод ShowHelpRequired, который вы указали в своем вопросе, в любом месте, доступном из вашего метода main. - person Rafalon; 16.08.2017
comment
@Rafalon спасибо за информацию, которую я уже забыл добавить ShowHelpRequired. Теперь у меня нет провала. Теперь, когда я запускаю exe-файл через cmd = › GUI.exe -h, я не получу справочную информацию (в cmd-Interface) - person Moha86B; 16.08.2017
comment
Вот код (из основного): static class Program { static bool ShowHelpRequired(IEnumerable‹string› args) { return args.Select(s => s.ToLowerInvariant()) .Intersect(new[] { help, /?, --help, -help, -h }).Any(); } static void Main(string[] args) { if(ShowHelpRequired(args)) { Console.WriteLine(Показать справочное сообщение здесь); } - person Moha86B; 16.08.2017
comment
@Moha86B Moha86B хорошо, теперь вместо Console.WriteLine("Show help message here"); вы должны написать все, что вы хотите, чтобы программа делала конкретно, когда вы запускаете ее с помощью GUI.exe -h - person Rafalon; 16.08.2017
comment
@Rafalon спасибо за ваше сообщение. Было бы очень полезно, если бы вы могли привести простой пример для получения вывода в моем cmd (с GUI.exe -h). - person Moha86B; 16.08.2017
comment
@ Moha86B Извините за поздний ответ на ваш комментарий, но я думал, что мой последний комментарий уже был простым примером. - person Rafalon; 28.08.2017