Hello World
概要
NDCLI で、'Hello World' の文字列を出力するチュートリアルです。
コマンドラインエクステンションを開発して、NDCLI からそのコマンドを実行したときに'Hello World'を標準出力に出力します。
全体の流れ
- コマンドラインエクステンションの準備
 - コマンド処理の実装
 - 実行環境への配置
 - コマンドラインエクステンションの実行
 
公開サンプル
- 本チュートリアルの結果として作成されるソースコード一式を GitHub で公開しています。
外部リンク: Hello World
 
ゴールイメージ
- NDCLI から HelloWorld 出力コマンドラインエクステンションを実行すると、次のようにメッセージが出力されます。
 
> ndcli HelloWorld
'Hello World'
コマンドラインエクステンションの準備
Visual Studio で コマンドラインエクステンションプロジェクトを新規作成して、コマンドラインエクステンションのデバッグ環境を準備する手順を、次の順に説明します。
- Visual Studio での新しいプロジェクトの作成
 - コマンドラインエクステンション開発用 NuGet パッケージのインストール
 - クラスの新規作成
 
ここでは、Visual Studio 2022 (以下、VS)での操作手順を説明します。
VS での新しいプロジェクトの作成
コマンドラインエクステンションプロジェクトを新規作成するには、次の手順で行います。

- VS を起動し、スタートページから [新しいプロジェクトの作成] をクリックして、[新しいプロジェクトの作成] ウィザードを開きます。
 - プロジェクトテンプレートから C# による [クラス ライブラリ] を選択して [次へ] ボタンを押下します。
 - [新しいプロジェクトを構成します] で、下記表にしたがって項目を入力して [次へ] ボタンを押下します。
 - [追加情報] で、下記表にしたがって [フレームワーク] を選択して [作成] ボタンを押下します。
 - これにより、C# によるクラスライブラリ開発の VS プロジェクトのひな型が新規作成されます。
 - ひな型として作成されたファイルのうち、
Class1.csファイルは使用しません。VS のソリューション エクスプローラーから削除してください。 
| 項目 | 値 | 
|---|---|
| プロジェクト名 | HelloWorldCliExtensionSample | 
| 場所 | プロジェクト一式を格納する任意の親フォルダ | 
| ソリューション名 | HelloWorldCliExtensionSample | 
| フレームワーク | .NET Standard 2.0 | 
- プロジェクト名は "CliExtension" の文字列を含んだ名前としてください。
 - プロジェクトの設定の詳細については次のページを参照ください。
 
パッケージのインストール
コマンドラインエクステンション開発に必要な NuGet パッケージをインストールには、次の手順で行います。


- Visual Studio のソリューション エクスプローラーからプロジェクトの[依存関係]を選択し、コンテキストメニューから[NuGetパッケージの管理]を実行します。
 - パッケージソースを
nuget.orgになっていることを確認し、[参照]タブでNextDesign.Cli.ExtensionFrameworkと入力してパッケージを検索します。 - 一覧表示されたパッケージの中から次のパッケージをインストールします。
NextDesign.Cli.ExtensionFramework 
ビルドの設定
Visual Studio のビルド後のイベントに次のコマンドを設定します。
dotnet publish "$(ProjectPath)" -c $(ConfigurationName) --no-build

クラスの新規作成
VS プロジェクトに新しい項目としてクラス: HelloWorldCliExtensionSample を新規作成するには、次の手順で行います。

- VS のソリューションエクスプローラーから VS プロジェクトを右クリックして、コンテキストメニューの [追加] > [クラス] コマンドを実行します。
 - 追加する項目の種類で [クラス] を選択されていることを確認して、[名前] 入力フィールドに 
HelloWorldCliExtensionSampleを入力して [追加] ボタンを押下します。 - これにより、
HelloWorldCliExtensionSample.csファイルのひな型が新規作成され、VS のソリューションエクスプローラーにも表示されます。 
コマンド処理の実装
コマンドラインエクステンションのエントリーポイントと 'Hello World' 出力処理を実装するには、クラスの新規作成で作成したクラスに、次の内容を実装します。
- 参照する API の名前空間の宣言
 - エントリーポイントとなる 
ExtensionBaseクラスを継承したクラス - 'Hello World' 出力処理のコマンドハンドラ
 
実装例
HelloWorldCliExtensionSample.cs
using NextDesign.Cli.ExtensionFramework;
using DensoCreate.Cli.Framework;
namespace HelloWorldCliExtensionSample
{
    public class HelloWorldCliExtensionSample : ExtensionBase
    {
        /// <summary>
        /// コンストラクタ
        /// </summary>
        public HelloWorldCliExtensionSample(): base("HelloWorldCliExtensionSample")
        {
        }
    }
    /// <summary>
    /// HelloWorld コマンドを実装します
    /// </summary>
    public class HelloWorld : Command
    {
        /// <summary>
        /// コンストラクタ
        /// </summary>
        public HelloWorld() : base("HelloWorld", "'Hello World'を出力します")
        {
            RegisterHandler(nameof(OnExecute));
        }
        /// <summary>
        /// ハンドラ実行
        /// </summary>
        private void OnExecute()
        {
            Console.WriteLine("'Hello World'");
        }
    }
}
実行環境への配置
ビルド結果として publish フォルダに出力されたファイル一式を、次のフォルダに格納します。
- Windows版:
"%HOMEPATH%\AppData\Local\DENSO CREATE\Next Design CLI\extensions\HelloWorld\" - Linux版:
"$HOME/.local/share/DENSO CREATE/Next Design CLI/extensions/HelloWorld/" 
コマンドラインエクステンションの実行
コマンドプロンプトから次のコマンドを実行すれば'Hello World'が標準出力に出力されます。
> ndcli HelloWorld
'Hello World'
コマンドラインエクステンションの実行にはライセンス登録が必要です。詳細は次のページをご参照ください。