对我来说,它适用于上述方法,但前提是我没有使用--help
-option(例如MyApp batch
)来呼叫我的应用程序。当我使用MyApp --help batch
时,行为与您所描述的相同。
但是,我们似乎无法像help
-option一样工作。
编辑:我设法与修改的Commandline.Parser.cs
代码得到这个工作如下:
private bool TryParseHelpVerb(string[] args, object options, Pair<MethodInfo, HelpVerbOptionAttribute> helpInfo, OptionMap optionMap)
{
var helpWriter = _settings.HelpWriter;
if (helpInfo != null && helpWriter != null)
{
if (string.Compare(args[0], helpInfo.Right.LongName, GetStringComparison(_settings)) == 0)
{
// User explicitly requested help
var verb = args.FirstOrDefault(); // <----- change this to args[1];
if (verb != null)
{
var verbOption = optionMap[verb];
if (verbOption != null)
{
if (verbOption.GetValue(options) == null)
{
// We need to create an instance also to render help
verbOption.CreateInstance(options);
}
}
}
DisplayHelpVerbText(options, helpInfo, verb);
return true;
}
}
return false;
}
的问题出现在该行
var verb = args.FirstOrDefault();
作为第一个参数(args[0]
)被解释为动词或更好的动作动作(如文档中所述)verb
将在这里全部是help
。所以我们用args[1]
替代它,其中包含实际的动词,例如commit
。
EDIT2:为了使这项工作--help
还我们也应该修剪掉-
的第一个参数(args[0]
)字符数限制
if (string.Compare(args[0].Trim('-'), helpInfo.Right.LongName, GetStringComparison(_settings)) == 0)
你能不能帮我做这件事改变了我的项目? 我使用'CommanLine'作为库。所以我不能改变它的源代码。然后我从git克隆回购,并尝试找到'TryParseHelpVerb'函数或'DisplayHelpVerbText',但找不到任何东西。我需要做什么? – gek0n
下载源代码,适当更改并将其构建为lib。 – HimBromBeere
对于我需要注意的每个人:您需要更改并编译“稳定”分支。当它成功编译时,需要替换“bin \ debug”文件夹和“packages \ CommandLineParser \ lib \ net45”文件夹中的那些库。祝你好运! – gek0n