Я пытаюсь использовать библиотеку CommandLineParser
в версии 2.5.0 в приложении WinForms.
Отлично работает, за исключением экрана справки (в этом случае MessageBox).
Я уже понял, что мне нужно создать собственный синтаксический анализатор и установить по крайней мере для свойства HelpWriter
значение null
, чтобы создать пользовательский экран справки.
Но когда приложение вызывается с аргументом --help
, мой «Обработчик ошибок» просто получает один экземпляр ошибки с Tag
типа CommandLine.ErrorType
и значением HelpRequestedError
Теперь, как создать собственный экран справки?
https://github.com/commandlineparser/commandline/wiki/Generating-Help-and-Usage-information
Этот сайт предлагает использовать типы в пространстве имен CommandLine.Text, но как? Есть ноль примеров, как это сделать.
Кто-нибудь здесь делал что-то подобное?
У меня есть следующий код:
namespace myWorkspace
{
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Windows.Forms;
using CommandLine;
using DevExpress.XtraEditors;
using Options;
internal static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
internal static int Main(string[] args)
{
AppDomain.CurrentDomain.SetupInformation.PrivateBinPath = "bin";
WindowsFormsSettings.EnableFormSkins();
WindowsFormsSettings.EnableMdiFormSkins();
WindowsFormsSettings.ForceDirectXPaint();
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
var parser = new Parser(config =>
{
config.AutoHelp = true;
config.AutoVersion = true;
config.CaseInsensitiveEnumValues = false;
config.CaseSensitive = false;
config.EnableDashDash = true;
config.HelpWriter = null;
config.IgnoreUnknownArguments = true;
//config.MaximumDisplayWidth
config.ParsingCulture = CultureInfo.InvariantCulture;
});
return Parser.Default.ParseArguments<RunOptions>(args)
.MapResult(
RunRunAndReturnExitCode,
RunParsingFailedAndReturnExitCode);
}
private static int RunRunAndReturnExitCode(RunOptions opts)
{
try
{
Application.Run(new MainForm());
}
catch
{
return -1;
}
return 0;
}
private static int RunParsingFailedAndReturnExitCode(IEnumerable<Error> errs)
{
foreach (var err in errs)
{
var locErr = err;
}
return 1;
}
}
}
И в линии var locErr = err;
Я не знаю, что делать, чтобы получить экранное сообщение справки, которое я могу показать в MessageBox или тому подобном.
CommandLineParser
, кажется, поддерживает консольный вывод "из коробки" для help
или --help
, но у меня нет консольного приложения здесь.