命令行解析器 NUGet 包让简单的示例程序工作

Posted

技术标签:

【中文标题】命令行解析器 NUGet 包让简单的示例程序工作【英文标题】:Command Line Parser NUGet Package getting simple example program to work 【发布时间】:2020-03-15 09:24:23 【问题描述】:

我发现这非常具有挑战性,感谢您愿意为我提供的任何帮助。

目前我正在尝试实现命令行解析器 (https://github.com/commandlineparser/commandline)。

我只想让一个基本的示例应用程序正常工作,但我被卡住了。

最终我想要以下模式

MyProgram -soureid 1231 -domain alpha

我将 sourceid 和 domain 作为有效变量。 sourceid 的值为 1231,domain 的值为“alpha”。

这是一个 C# .net 核心应用程序 (2.3),我正在运行 Visual Studio 2017。

这是我到目前为止的代码......

    using System;
using CommandLine;

namespace Program

    class Program
    
        public static void Main(String[] args)
        
            var options = new SomeOptions();

            CommandLine.Parser.Default.ParseArguments(args, typeof(SomeOptions));

            Console.WriteLine(options.Age);

            Console.ReadLine();
        
    
    class SomeOptions
    
        [Option('n', "name", Required = true)]
        public string Name  get; set; 

        [Option('a', "age")]
        public int Age  get; set; 
    

此代码不起作用。当我通过 -n Jason 我得到这个..

CommandLineArgumentParsing 1.0.0
Copyright (C) 2019 CommandLineArgumentParsing

ERROR(S):
  Verb '-n' is not recognized.

  --help       Display this help screen.

  --version    Display version information.

0

我相信这个问题与这条线有关..

 CommandLine.Parser.Default.ParseArguments(args, typeof(SomeOptions));

好像这条线应该是这样的..

 CommandLine.Parser.Default.ParseArguments(args, typeof(options));

但是编译器抱怨“'options' 是一个变量,但用作类型”

我做错了什么?

【问题讨论】:

【参考方案1】:

在我问这个问题大约两秒钟后我就明白了。

替换..

CommandLine.Parser.Default.ParseArguments(args, typeof(SomeOptions));

随着...

Parser.Default.ParseArguments<SomeOptions>(args).WithParsed(parsed => options = parsed);

【讨论】:

以上是关于命令行解析器 NUGet 包让简单的示例程序工作的主要内容,如果未能解决你的问题,请参考以下文章

Shell脚本简单示例

手把手教你 通过 NuGet.Server 包 搭建nuget服务器,并使用桌面工具上传 nuget 包,免命令行

通过命令行在 VS Installer 中启用 NuGet 包管理器。 (作为自动化脚本的一部分)

HelpVerbOption 不工作 - 命令行解析器 C#

ruby Ruby中的简单命令行解析器

如何使用命令行清除 NuGet 包缓存?