私の場合は、上記の方法を使用して動作しますが、--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;
}
問題は非常に最初の引数(args[0]
)として
var verb = args.FirstOrDefault();
ラインに表示されます動詞として解釈されるか、またはそれより良いアクション(ドキュメントに記載)verb
は、常にhelp
になります。したがって、args[1]
に置き換えます。具体的には、の動詞が含まれています(例:commit
)。
EDIT2:また、我々はまた、
if (string.Compare(args[0].Trim('-'), helpInfo.Right.LongName, GetStringComparison(_settings)) == 0)
-character
-
から最初の引数(args[0]
)をトリミングする必要があり--help
ために、この作品を作るためには、あなたは私のプロジェクトでこの変更を行うのを助けることができますか? 私は 'CommanLine'をライブラリとして使っています。だから私はそれをソースコードを変更することはできません。その後、私はgitからRepoをクローンし、 'TryParseHelpVerb'関数または' DisplayHelpVerbText'を見つけようとしますが、何も見つけられません。私は何をする必要がありますか? – gek0nソースコードをダウンロードし、適切に変更してlibとしてビルドします。 – HimBromBeere
誰もが気付くはずです: "stable"ブランチを変更してコンパイルする必要があります。コンパイルが成功したら、 "bin \ debug"フォルダと "packages \ CommandLineParser \ lib \ net45"フォルダにあるlibsを置き換える必要があります。がんばろう! – gek0n