どのようにして従来のC#commadnlineツールを効率的にサブパーザを使用するように変換できますか?具体的には、レガシーcommadlineツールを効率的に移行する場合に興味があり、その中には数百ものパラメータが並んでいないものが並んでいます。どのようにして、従来のC#コマンドラインツールを効率的にサブパーザを使用するように変換できますか?
Pythonでは、subparser using the ArgParseライブラリを作成することができます。これにより、モノリシックCLIを効率的に分割できます。 C#のいくつかの同等の推奨メソッドは何ですか?
サブパラーダーになじみのない人には、例を示すことができます。位置の引数がbaroneまたはbartwoのプログラムfoo.exeを考えてみましょう。それぞれの引数には独自の引数があります。私はこのようなCLIの経験を持っているしたいと思います:
>> foo.exe
foo.exe [barone|bartwo]
error: missing first positional argument.
>> foo.exe barone
foo.exe barone [--baronevariable:<value>]
error: missing --baronevariable argument value
私は変換てるレガシープログラムは、すべてのWintellect ICmdArgsインタフェースを使用して実装され、すべてのような経験を持っている:
>> foo.exe
barone Some barone info
bartwo Some bartwo info
--baroneVariable Some barone variable info
--bartwoVariableOne Some bartwo variable one info
etc.....
付きをWintellect ICmdArgモデルでは、baroneに特定の変数(barone変数が付いている必要がある)を必要としていると言う特定のインターフェースはないようです。
私はこのパッケージを推薦することをお勧めしません。また、この質問を読んでいる人々が説明を求めていたため、このような作業の些細なことにも議論しません。しかし、むしろ、数百のパラメータを持つ従来のコマンドラインツールを比較的効率的に変換したいと考えています。建設的な推奨事項はありますか?
。あなたは引数の解析ライブラリを求めていますか?それはすでに話題になっているので、SOのために話題にはなっていません。すでに尋ねられ、答えられ、閉鎖されています(http://stackoverflow.com/questions/491595/best-way-to-parse-command-line-arguments-in- c≠rq = 1)。または、ライブラリで特定の動作が利用可能かどうかを尋ねていますか?後者の場合は、特定の動作を記述してください。今のように、質問はかなり不明です。 –
ベースクラスライブラリで 'prebaked'を使うと、何もないと思いますが、[たくさんのサードパーティのライブラリ](http://nugetmusthaves.com/Tag/CommandLine)があります。 –
@MikeMcCaughanここに私が望むCLIの例があります。これは、foo.exeというプログラムで、1つの位置引数を[barone | bartwo]にすることができ、それぞれにはいくつかのパラメータがあります。したがって 'foo'と入力すると 'foo [barone | bartwo]'と表示され、 'foo barone'と入力すると 'foo barone [--baroneparam] missing param'のような結果が得られます。 –