我正在使用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; }
答案 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 ?,它仍然无效。)