【问题标题】:Passing Guid to Command Line parser Library in C#在 C# 中将 Guid 传递给命令行解析器库
【发布时间】:2014-12-24 04:18:57
【问题描述】:

我正在使用 nuget 包 Command Line Parser 来解析 C# 中的命令行参数。

如何从命令行传递 GUID?

ApplicationName.exe -g="3a0e5412-0971-4e0e-aebc-29dd09907b31"

不起作用。

我的 CommandLineArgs 类是

[Option('g', "sampleguid", Required = true, HelpText = "Enter a sample GUID")]
public Guid MyGuid { get; set; }

【问题讨论】:

  • 你能描述一下“不起作用”吗?结果是什么?有例外吗?
  • Parser.Default.ParseArguments(args, commandLineArgs) 返回 false
  • 检查文档,看看是否有办法检查它返回 false 的实际原因。您甚至可以通过在 Intellisense 中四处寻找它。

标签: c# command-line-arguments


【解决方案1】:

首先,Guid 没有内置功能。其次,确保您使用的是最新版本 2.6.0.5。您可以通过 nuget -> 搜索“CommandLineArgumentsParser”来安装它。

安装最新版本后,您可以这样解释自定义结构:

var parser = new CommandLineParser.CommandLineParser();

var guidArgument = new ValueArgument<Guid>('g', "guid", "Guid of something");
guidArgument.ConvertValueHandler = Guid.Parse;

parser.Arguments.Add(guidArgument);

parser.ParseCommandLine(args);

// the actual guid from command line.
var parsedGuid = guidArgument.Value;

如果要保留当前版本,需要在解析的时候把Guid当成string,以后再自己做custom validation

http://commandlineparser.codeplex.com/wikipage?title=More%20thorough%20examples&referringTitle=Home

【讨论】:

    【解决方案2】:

    GUID is not working for input parameter 可以看出,Guid 解析问题已经修复。 (但是,如果您使用 Guid?,它仍然不起作用。)

    【讨论】:

      【解决方案3】:

      您是否尝试过删除“=”并改用“”(空格)?

      如:ApplicationName.exe -g "3a0e5412-0971-4e0e-aebc-29dd09907b31"

      【讨论】:

      • +1:在 Unix/Linux 领域,附加到“短选项”的参数必须指定为 -x &lt;some-argument-value&gt; 或“-x”。如果应用程序支持 参数捆绑,其中短选项连接在一起(例如,-a -b -c 可以指定为 -abc,接受参数的选项必须是包中的最后一个选项,并且参数是规范的其余部分(-abcx&lt;some-argument-value&gt; 或命令行上的下一个工作(-abcx &lt;some-argument-value&gt;.
      猜你喜欢
      • 1970-01-01
      • 2011-12-05
      • 2020-03-01
      • 2013-10-09
      • 2010-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多