Table of Contents

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

🚀 クイックスタート: ZYC.Framework Host を始める

このガイドでは、ZYC.Framework Host プロジェクトを一から作成する手順を説明します。NuGet でフレームワークを導入し、モジュール機構(Module + UserControl)を使って独自 UI をホスト環境に組み込む方法を学びます。🛠️


推奨: dotnet tool で作成する

ZYC.Framework CLI ツールをインストール、または更新します:

dotnet tool install --global ZYC.Framework.CLI --version 1.4.3
# すでにインストール済みの場合:
dotnet tool update --global ZYC.Framework.CLI --version 1.4.3

最小構成の Host プロジェクトを作成します:

zyc new WpfApp1

既定のプロジェクト テンプレートは minimal です。これは下の手動手順と同じ Host 構成を生成します。テンプレートを明示することもできます:

zyc new WpfApp1 --template minimal

Entry プロジェクト、モジュール プロジェクト、Abstractions プロジェクトを含むソリューションが必要な場合は modular を使います:

zyc new MyCompany.Tools --template modular

よく使うオプション:

zyc new MyCompany.Tools --output ./MyCompany.Tools --package-version 1.4.3

生成されたソリューションまたはプロジェクトを開き、スタートアップ プロジェクトに設定してデバッグを開始します。生成済みファイルには、パッケージ参照、Module.csModuleConfig.json、初期ビューが含まれています。


手動作成方法

以下は、Host プロジェクトを手作業で作成したい場合の同等手順です。

1. 🧱 プロジェクトの作成と前提条件

  1. プロジェクトを作成: .NET 10 を対象にした新しい WPF Application を作成します(例: WpfApp1)。✨
  2. NuGet パッケージを追加: NuGet パッケージ マネージャーからコア パッケージ ZYC.Framework.Alpha をインストールします。📦
<ItemGroup>
  <PackageReference Include="ZYC.Framework.Alpha" Version="1.4.3" />
</ItemGroup>
  1. 既定のエントリ ポイントを整理: 🧹 フレームワークは独自の統一エントリ ポイント (Entry.cs) を提供します。テンプレートが生成した次の既定ファイルは 必ず削除 してください:
  • App.xaml
  • App.xaml.cs
Important

⚠️ 重要: App.xaml を削除しないと、グローバル エントリ ポイントが競合します。アプリケーションの起動処理はフレームワークが全面的に管理します。


2. ⚙️ アセンブリ参照の設定

ホストが抽象化インターフェイスを正しく認識して読み込めるように、.csproj ファイルに Abstractions アセンブリ参照を手動で追加します。🔗

<ItemGroup>
  <Reference Include="ZYC.Framework.Abstractions">
    <HintPath>$(OutputPath)ZYC.Framework.Abstractions.dll</HintPath>
  </Reference>
</ItemGroup>

3. 🛠️ 業務モジュールを実装する (Module.cs)

プロジェクト ルートに Module.cs ファイルを作成します。このクラスはモジュールの「頭脳」として機能し、読み込みロジックを定義しながら、ホストへ UI ページを登録します。🧠

using Autofac;
using ZYC.Framework.Abstractions.Tab;
using ZYC.CoreToolkit;
using ZYC.CoreToolkit.Extensions.Autofac;

namespace WpfApp1;

internal class Module : ModuleBase
{
    public override Task LoadAsync(ILifetimeScope lifetimeScope)
    {
        // 必要に応じて組み込みデバッガー ツールをアタッチ
        DebuggerTools.Attach();

        // Tab Manager を解決し、UI コンポーネントを登録
        var simpleTabItemFactoryManager = lifetimeScope.Resolve<ISimpleTabItemFactoryManager>();
        simpleTabItemFactoryManager.Register(new SimpleTabItemFactoryInfo(typeof(UserControl1)));

        return base.LoadAsync(lifetimeScope);
    }
}

4. 🎨 UI コンポーネントを作成する

新しい UserControl1(WPF User Control)を作成し、[Register] 属性を付与します。これにより、フレームワークの依存性注入(DI)コンテナーが自動的にこの型を認識して管理できます。🖥️

using ZYC.CoreToolkit.Extensions.Autofac.Attributes;

namespace WpfApp1;

[Register] // DI コンテナーに自動登録
public partial class UserControl1
{
    public UserControl1()
    {
        InitializeComponent();
    }
}

5. 📄 モジュール構成ファイルを追加する

プロジェクト ルートに ModuleConfig.json ファイルを作成します。このファイルはホストに対して、どのアセンブリを動的に読み込むかを伝える「マップ」として機能します。さらに、メイン実行ファイルを基準に ../settings/ModuleConfig.json へコピーされるようにプロジェクトを設定します。⚙️

  1. ファイル内容:
{
  "AdditionalAssemblyNames": [
    "WpfApp1.dll"
  ],
  "DisabledAssemblyNames": []
}
  1. プロジェクト項目の設定: 📌 ビルド時に ModuleConfig.json../settings/ModuleConfig.json として生成するため、.csproj ファイルに次の設定を追加します:
<ItemGroup>
  <None Update="ModuleConfig.json">
    <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    <Link>../settings/ModuleConfig.json</Link>
  </None>
</ItemGroup>

💡 ヒント: AdditionalAssemblyNames には Module.cs を含むアセンブリ名を必ず含めてください。


6. ▶️ 実行とデバッグ

  1. スタートアップ プロジェクトを設定: この WPF プロジェクトをソリューションの Startup Project に設定します。
  2. デバッグを開始: F5 を押します。

🎉 期待される結果: ホストが起動し、ModuleConfig.json をスキャンして WpfApp1 モジュールを読み込みます。登録した UserControl1 ページがメイン インターフェイスの新しいタブとして自動的に表示されます。


quick-start-ui.png