Parser.Default.ParseArguments всегда возвращает false - PullRequest
0 голосов
/ 13 февраля 2019

Я добавил библиотеку CommandLineParser в свой проект и настроил все аргументы, которые должны быть предоставлены моему проекту для поддержки автоматической установки того же самого.

Класс InstallOptions создается с некоторой опцией «Option»"атрибуты для каждого из обязательных и необязательных аргументов одного и того же, например ниже

public class InstallOptions
{
    [Option("path", Required = true, HelpText = "The installation path where you want the application installed.")]
    public string InstallPath { get; set; }

    [Option("dbname", Required = true, HelpText = "Database name.")]
    public string DbName { get; set; }

    [Option("dbserver", Required = true, HelpText = "Database server name or IP address.")]
    public string DbServer { get; set; }

    [HelpOption]
    public string DisplayHelpOnParseError()
    {
        var help = new HelpText()
        {
            AddDashesToOption = true
        };
        var errors = "";

        if (LastParserState.Errors.Any())
        {
            errors = help.RenderParsingErrorsText(this, 0);
        }

        //HACK fix where if help.addoptions is called more than once it truncates the output
        if (_help == null)
        {
            help.AddOptions(this);
            _help = help;
        }
        else
        {
            return String.IsNullOrEmpty(errors) ? _help : "ERROR(S):" + errors + _help;
        }

        return help;
    }
}

Из моего файла program.cs, который я хочу отладить, я запускаю свой проект, как показано ниже

public static void Main(string[] args)
    {
        args = new string[3];
        args[0] = "--path C:\\Program files\MyProject";
        args[1] = "--dbname myDBName";
        args[2] = "--dbserver myDBServer";

        var result = Parser.Default.ParseArguments(args, installOptions);
        if (!result) throw new ArgumentException(installOptions.DisplayHelpOnParseError());
    }

в приведенном выше коде я все время получаю результат = false и состояния выдает ниже сообщение об ошибке

- требуется путь.Путь установки, куда вы хотите установить приложение.

- требуется имя dbname.Имя базы данных.

- требуется dbserver.Имя сервера базы данных или IP-адрес.

Пожалуйста, помогите мне, как передать все 3 параметра в мой проект, чтобы проверить, что он работает правильно.

Заранее спасибо

...