Table of Contents

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

项目模板

ZYC.Framework 通过 dotnet tool 命令支持两类常见脚手架任务:创建新的 Host 项目,以及向已有源码树添加新模块。本文说明模板类型、生成结构和命令选项。

命令入口

命令 目的 适用场景
zyc new <ProjectName> 从项目模板创建一个外部 ZYC.Framework Host 项目。 在框架仓库之外启动新应用或示例。
zyc new-module <ModuleName> [--src-root <SourceRoot>] 在已有源码树中创建模块实现项目和对应的 *.Abstractions 项目。 扩展已有的 ZYC.Framework 风格仓库。

以 .NET tool 方式安装或更新 CLI:

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

然后确认命令可用:

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

minimal 模板

minimal 是 zyc new 的默认模板。它会创建一个小型 WPF Host 项目,引用 ZYC.Framework.Alpha,并把一个 WPF View 注册为 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,并且功能表面只是一个简单 WPF View 时,使用这个模板。

console 模板

console 会创建一个 net10.0 控制台解决方案,其中包含共享构建属性,以及一个引用 ZYC.CoreToolkit 4.0.0 的控制台项目。

zyc new MyCompany.Tools --template console

生成结构:

MyCompany.Tools/
  .editorconfig
  .gitignore
  Directory.Build.props
  Directory.Build.targets
  MyCompany.Tools.slnx
  MyCompany.Tools/
    MyCompany.Tools.csproj
    Program.cs

当你需要一个保留源模板根级共享构建配置的小型控制台应用时,使用这个模板。

build 模板

build 会创建独立的 <ProjectName>.Build 项目,负责版本生成、编译和 NuGet 打包,并附带一个简单的主项目。

在 Windows 上使用 .NET 10 SDK 运行:

zyc new MyCompany.Tools --template build
cd MyCompany.Tools
dotnet run --project MyCompany.Tools.Build/MyCompany.Tools.Build.csproj -c Release

在 MyCompany.Tools.Build/BuildEnvironment.cs 中设置包版本。Build 项目会生成 version.props,编译参与发布的项目并将 NuGet 包输出到 _bin/,自身输出放在 _bin_build/。生成的 README 说明了手动发布工作流和仓库变量 NUGET_USER 的配置方法。

wpf 模板

wpf 会创建一个 net10.0-windows WPF 解决方案,其中包含基于 Autofac 的应用启动、配置注册、Fody 属性织入,以及对 ZYC.CoreToolkit 4.0.0 的引用。

zyc new MyCompany.Desktop --template wpf

生成结构:

MyCompany.Desktop/
  .editorconfig
  .gitignore
  Directory.Build.props
  Directory.Build.targets
  FodyWeavers.xml
  MyCompany.Desktop.slnx
  MyCompany.Desktop/
    App.xaml
    App.xaml.cs
    MainWindow.xaml
    MainWindow.xaml.cs
    Program.cs
    MyCompany.Desktop.csproj

当你需要一个保留源模板现有 Autofac 和配置启动逻辑的小型 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,模块提供带路由的 Tab 工厂、主菜单项和模块入口。

zyc new 选项

选项 说明
<ProjectName> 必填项目名。必须是有效的点分隔 C# 标识符,例如 Acme.Tools。
--template, -t 项目模板。支持 minimal、modular、console、build 和 wpf,默认 minimal。
--output, -o 输出目录。默认 ./<ProjectName>。
--package-version ZYC.Framework.Alpha 包版本。默认使用 CLI 产品版本。
--overwrite, -f 覆盖已有文件。不指定时,如果目标文件已存在,生成会失败。

包含常用选项的示例:

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

面向已有源码树的 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 覆盖已有文件或模块目录。不指定时,如果目标目录已存在,生成会失败。

模板 Token

项目模板会替换路径和文本文件中的这些 Token:

Token 值
__PROJECT_NAME__ 完整项目名,例如 MyCompany.Tools。
__PROJECT_SHORT_NAME__ 最后一个点分隔片段,例如 Tools。
__PROJECT_HOST__ 用作 URI Host 的小写短名称,例如 tools。
__V_ZYC_FRAMEWORK_ALPHA__ 由 --package-version 或 CLI 产品版本决定的包版本。

文本模板文件会以 UTF-8 with BOM 写入,并统一为 CRLF 换行。

如何选择模板

情况 推荐命令
你想最快得到一个只有一个 View 的 Host。 zyc new MyCompany.Tools
你想创建一个引用 ZYC.CoreToolkit 的控制台应用。 zyc new MyCompany.Tools --template console
你需要独立的编译项目来管理版本、编译和打包。 zyc new MyCompany.Tools --template build
你想创建一个带 Autofac 和配置启动逻辑的 WPF 应用。 zyc new MyCompany.Desktop --template wpf
你想为新应用创建模块化解决方案。 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