Penguins-lab.Cargs の使い方。

Cargsとは

まず、Cargsについてですね。

Cargsってのは、私の作った .Net Framework向けコマンドラインパーサ?です。

C#で利用できるコマンドラインパーサだと ”Command Line Parser Library” なんかがありますが・・・
これって、"/"で始まるswitchは解析できないんですよね。
ただそれだけの理由で、作ったものです。

内部処理からして全部フルスクラッチしたせいで、不具合多しバグ多しなパッケージです。

ですが、何故か1日に8件とかのペースでDLされてるんですよね。(2017/11/28現在)

恐らく、DLした人は使い方がわからずそのまま削除してると思うんで、多少なり使い方の説明をしてる場所があっても良いのかな?と思った次第です。

Cargsの入手先

GitHub

github.com

パッケージやコードは、上のリンクから確認してくださいな。


導入

Visual Studio 2017 を使用して説明します。

[ソリューションエクスプローラー] > [プロジェクト] > [NuGetパッケージの管理(N)...]
https://i.gyazo.com/b1d54d7922c5fc55d5969447cc20d576.png

[参照]タブの検索窓で"Cargs"と検索して下さい
https://i.gyazo.com/81bb1b60bff798caf86134076c412559.png

出てきた、"Penguins-lab.Cargs"をインストールします。
https://i.gyazo.com/64f083367dcbbd60768c3a1eb87d7f43.png

特に依存関係も無いので、そのまま"OK"を押して進めます。
https://i.gyazo.com/909460966fbeed1f38faceba27348828.png

[出力]を確認して”終了”していれば完了です。
https://i.gyazo.com/e50ade7406ca193281278a3777f0365b.png



使い方

以下のソースコードをご覧ください。

using Cargs.Attributes;

namespace ConsoleApp1 {

    class Program {

        //短いswitch名と長いswitch名を指定できます。
        // /a
        // /prop1
        [PropSwitch( 'a', "prop1" )] 
        public bool HogeProp1 { get; set; }

        //長いswitch名だけでも
        // /prop2
        [PropSwitch( "prop2" )] 
        public bool HogeProp2 { get; set; }

        //もちろん短いswitch名だけでもOK
        // /p
        [PropSwitch( 'p' )] 
        public bool HogeProp3 { get; set; }

        // 文字列が欲しい場合
        // /prop4 hogehoge
        [PropSwitch( "prop4", Option = SwitchOptions.String )] 
        public string HogeProp4 { get; set; }

        //staticでも動作します。
        // /prop5
        [PropSwitch( "prop5" )] 
        public static bool HogeProp5 { get; set; }


        //こちらもPropertyと同じように指定できます
        // /b
        // /Method1
        [MethodSwitch( 'b', "Method1" )] 
        public void HogeMethod1() { }

        //引数を持つこともできます
        // /Method2 123 hoge
        [MethodSwitch( "Method2", SwitchOptions.Int, SwitchOptions.String )] 
        public void HogeMethod2( int i, string s) { }

        //もちろんstaticでも動作します。
        // /Method3
        [MethodSwitch( "Method3" )] 
        public static void HogeMethod3() { }

        static void Main(string[] args) {

            var ins = new Program();
            //引数の解析をします
            Cargs.Analyzer.Analyze( ins, args );

        }

    }
}


以上のサンプルで、だいたい使い方は分かって頂けましたか・・・?
少し、投げやり過ぎる気はしますが、許して下さい。

はじめの、

using Cargs.Attributes;

を追加するのをお忘れなく。