對我來說,它適用於上述方法,但前提是我沒有使用--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