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.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 的默认模板。它会创建一个小型 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 时,使用这个模板。

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 项目模板。支持 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 覆盖已有文件或模块目录。不指定时,如果目标目录已存在,生成会失败。

模板 Token

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

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

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

如何选择模板

情况 推荐命令
你想最快得到一个只有一个 View 的 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