Table of Contents

English | 日本語 | 简体中文 | 繁體中文 | 한국어 |

プロジェクト テンプレート

ZYC.Framework は、よく使う 2 つのスキャフォールド作業のために dotnet tool コマンドを提供します。新しい Host プロジェクトの作成と、既存ソース ツリーへの新しいモジュール追加です。このページではテンプレート、生成される構成、コマンド オプションを説明します。

コマンドの範囲

コマンド 目的 向いている用途
zyc new <ProjectName> プロジェクト テンプレートから外部 ZYC.Framework Host プロジェクトを作成する。 フレームワーク リポジトリ外で新しいアプリやサンプルを始める。
zyc new-module <ModuleName> --src-root <SourceRoot> 既存ソース ツリー内にモジュール実装プロジェクトと対応する *.Abstractions プロジェクトを作成する。 既存の ZYC.Framework 形式のリポジトリを拡張する。

CLI を .NET tool としてインストールまたは更新します。

dotnet tool install -g ZYC.Framework.CLI --version 1.4.3
dotnet tool update -g ZYC.Framework.CLI --version 1.4.3

コマンドを確認します。

zyc --help
zyc new --help
zyc new-module --help

minimal テンプレート

minimalzyc new の既定テンプレートです。ZYC.Framework.Alpha を参照する小さな WPF Host プロジェクトを作成し、1 つの WPF ビューを simple tab として登録します。

zyc new MyCompany.Tools

明示的に指定すると次のコマンドと同じです。

zyc new MyCompany.Tools --template minimal

生成される構成:

MyCompany.Tools/
  MyCompany.Tools.csproj
  MyCompany.Tools.slnx
  Module.cs
  ModuleConfig.json
  UI/
    ToolsView.xaml
    ToolsView.xaml.cs

最短で実行可能な Host を作り、機能面が 1 つの単純な WPF ビューで足りる場合に使います。

modular テンプレート

modular は Entry プロジェクト、モジュール実装プロジェクト、モジュール Abstractions プロジェクトを持つ小さなソリューションを作成します。

zyc new MyCompany.Tools --template modular

生成される構成:

MyCompany.Tools/
  Directory.Build.props
  Directory.Build.targets
  version.props
  MyCompany.Tools.slnx
  Entry/
    Entry.csproj
  ZYC.Framework.Modules.MyCompany.Tools/
    ZYC.Framework.Modules.MyCompany.Tools.csproj
    Module.cs
    ToolsMainMenuItem.cs
    ToolsTabItem.cs
    ToolsTabItemFactory.cs
    UI/
      ToolsView.xaml
      ToolsView.xaml.cs
  ZYC.Framework.Modules.MyCompany.Tools.Abstractions/
    ToolsModuleConstants.cs
    ZYC.Framework.Modules.MyCompany.Tools.Abstractions.csproj

公開定数を Abstractions に置き、ルーティング付きタブ ファクトリ、メインメニュー項目、モジュール入口を持つ、実際のフレームワーク モジュールに近い構成が必要な場合に使います。

zyc new オプション

オプション 説明
<ProjectName> 必須のプロジェクト名。Acme.Tools のような有効なドット区切り C# 識別子である必要があります。
--template, -t プロジェクト テンプレート。対応値は minimalmodular。既定は minimal
--output, -o 出力ディレクトリ。既定は ./<ProjectName>
--package-version ZYC.Framework.Alpha のパッケージ バージョン。既定は CLI の製品バージョン。
--overwrite, -f 既存ファイルを上書きする。この指定がない場合、対象ファイルが存在すると生成は失敗します。

よく使うオプションをすべて指定する例:

zyc new Acme.Tools --template modular --output ./Acme.Tools --package-version 1.4.3

既存ソース ツリー向けの new-module

既に src ツリーがあるリポジトリへモジュール ペアを追加する場合は new-module を使います。

zyc new-module Reports --src-root ./src --slnx ./ZYC.Framework.slnx

このコマンドは次を作成します。

src/
  ZYC.Framework.Modules.Reports/
    ZYC.Framework.Modules.Reports.csproj
    Module.cs
    ReportsMainMenuItem.cs
    ReportsTabItem.cs
    ReportsTabItemFactory.cs
    UI/
      ReportsView.xaml
      ReportsView.xaml.cs
  ZYC.Framework.Modules.Reports.Abstractions/
    ReportsModuleConstants.cs
    ZYC.Framework.Modules.Reports.Abstractions.csproj

--slnx は任意です。指定すると、生成されたプロジェクトはソリューション ファイルの /Modules/ フォルダーへ追加されます。相対 --slnx パスは --src-root から解決されます。

new-module はターゲット名を正規化します。次の入力はすべて同じモジュール ターゲットを生成します。

zyc new-module Reports --src-root ./src
zyc new-module ZYC.Framework.Modules.Reports --src-root ./src
zyc new-module ZYC.Framework.Modules.Reports.Abstractions --src-root ./src

new-module オプション

オプション 説明
<ModuleName> 位置引数のターゲット モジュール名。
--target, -t ターゲット モジュール名。位置引数またはこのオプションのどちらかを使い、矛盾する値を指定しないでください。
--src-root, -s モジュール プロジェクトを作成する必須のソース ルート。
--slnx 更新する任意の solution XML ファイル。ソリューション更新が不要な場合は省略します。
--overwrite, -f 既存ファイルまたはモジュール ディレクトリを上書きする。この指定がない場合、対象ディレクトリが存在すると生成は失敗します。

テンプレート トークン

プロジェクト テンプレートは、パスとテキスト ファイル内の次のトークンを置換します。

トークン
__PROJECT_NAME__ 完全なプロジェクト名。例: MyCompany.Tools
__PROJECT_SHORT_NAME__ 最後のドット区切りセグメント。例: Tools
__PROJECT_HOST__ URI host として使う小文字の短い名前。例: tools
__PACKAGE_VERSION__ --package-version または CLI 製品バージョンで選択されたパッケージ バージョン。

テキスト テンプレート ファイルは UTF-8 with BOM で書き込まれ、CRLF 改行に正規化されます。

テンプレートの選び方

状況 推奨コマンド
1 つのビューを持つ最速の Host が欲しい。 zyc new MyCompany.Tools
新しいアプリでモジュール形式のソリューションが欲しい。 zyc new MyCompany.Tools --template modular
既存リポジトリへモジュールを追加したい。 zyc new-module Reports --src-root ./src
生成したモジュール プロジェクトを既存 .slnx に追加したい。 zyc new-module Reports --src-root ./src --slnx ./ZYC.Framework.slnx