私にとっては、上記のアプローチを使用して機能しますが、 -option なしでアプリを呼び出した場合のみ--help
(たとえばMyApp batch
)。私が使用するときMyApp --help batch
の動作は、あなたが説明したとおりです。
ただし、 - オプションで同じように動作するようには見えhelp
ません。
編集:次のコードを変更することで、これを機能させることができました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:これを機能させるには、 -characterから最初の引数()--help
もトリミングする必要がありますargs[0]
-
if (string.Compare(args[0].Trim('-'), helpInfo.Right.LongName, GetStringComparison(_settings)) == 0)