首页 > 解决方案 > Parser.Default.ParseArguments 总是返回 false

问题描述

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

正在为相同的每个必需和非必需参数创建一个带有一些“选项”属性的 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 个参数传递给我的项目以测试它是否正常工作。

提前致谢

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

解决方案


参数应按如下方式传递

论据


推荐阅读