2016-05-02 6 views
0

どのようにして従来の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変数が付いている必要がある)を必要としていると言う特定のインターフェースはないようです。

私はこのパッケージを推薦することをお勧めしません。また、この質問を読んでいる人々が説明を求めていたため、このような作業の些細なことにも議論しません。しかし、むしろ、数百のパラメータを持つ従来のコマンドラインツールを比較的効率的に変換したいと考えています。建設的な推奨事項はありますか?

+0

。あなたは引数の解析ライブラリを求めていますか?それはすでに話題になっているので、SOのために話題にはなっていません。すでに尋ねられ、答えられ、閉鎖されています(http://stackoverflow.com/questions/491595/best-way-to-parse-command-line-arguments-in- c≠rq = 1)。または、ライブラリで特定の動作が利用可能かどうかを尋ねていますか?後者の場合は、特定の動作を記述してください。今のように、質問はかなり不明です。 –

+0

ベースクラスライブラリで 'prebaked'を使うと、何もないと思いますが、[たくさんのサードパーティのライブラリ](http://nugetmusthaves.com/Tag/CommandLine)があります。 –

+0

@MikeMcCaughanここに私が望むCLIの例があります。これは、foo.exeというプログラムで、1つの位置引数を[barone | bartwo]にすることができ、それぞれにはいくつかのパラメータがあります。したがって 'foo'と入力すると 'foo [barone | bartwo]'と表示され、 'foo barone'と入力すると 'foo barone [--baroneparam] missing param'のような結果が得られます。 –

答えて

0

これまでにPlossum CommandLineを使用しました。それは便利です。 最終バージョンは2011年のものですので、コマンドライン解析の世界では何も変わっていないようです。

これはSO answerです(強く):NDesk.Options 私は300+アップ票は良い兆候だと思います。

C#のための他のコマンドライン構文解析ツールは次のように、あまりにもあります。これは、もう少し詳細を必要とするhttps://commandline.codeplex.com/

関連する問題