将Guid传递给C#中的命令行解析器库

时间:2014-10-28 16:41:54

标签: c# command-line-arguments

我正在使用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; }

3 个答案:

答案 0 :(得分:2)

首先,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

答案 1 :(得分:1)

您是否尝试删除“=”并使用“”(空格)代替?

赞:ApplicationName.exe -g“3a0e5412-0971-4e0e-aebc-29dd09907b31”

答案 2 :(得分:0)

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