Parser.Default.ParseArguments始终返回false

时间:2019-02-13 14:28:06

标签: c# command-line command-line-arguments

我已将CommandLineParser库添加到我的项目中,并且配置了应提供给我的项目的所有参数,以支持它们的静默安装。

正在使用相同参数的每个必需参数和非必需参数创建具有一些“ Option”属性的InstallOptions类。下面

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());
    }

在上面的代码中,我一直都得到result = false并且状态抛出以下错误消息

-必需的路径。您要在其中安装应用程序的安装路径。

-需要dbname。数据库名称。

-需要dbserver。数据库服务器名称或IP地址。

请帮助我如何将所有3个参数传递给我的项目以测试其是否正常工作。

预先感谢

1 个答案:

答案 0 :(得分:0)

参数应如下传递

arguments