用途:帮助智能体从现有 .csproj 项目创建并校验自定义 dotnet new 模板,生成 .template.config/template.json,并在发布前检查编写问题。
主要能力:从源项目引导模板(默认复制到独立 template-source 目录,保留原项目不动);生成含 identity(反向 DNS)、name、shortName、sourceName、classifications、tags 的 template.json;保留源项目的 SDK 类型、Analyzer/包引用元数据(PrivateAssets、IncludeAssets、ExcludeAssets)、OutputType、TreatWarningsAsErrors、Nullable、LangVersion、CPM 参与、自定义 build props/targets 与仓库约定;支持参数、条件内容、post-actions、约束、分类与标签;支持打包为 NuGet 模板。
使用方式:创建时提供源 .csproj 路径、模板名称与短名;校验时提供 template.json 路径。条件 XML 需用 XML 注释包裹模板指令,如 <!--#if (database == "SqlServer") --> 与 <!--#endif -->,不可用裸 #if。restore post-action 使用 actionId 210D431B-A78B-4D2F-B762-4ED3E3EA9025,优先用 primaryOutputs,或用 args.files 匹配源模板路径。host 约束用 args 数组含 { "hostname": "dotnetcli" };SDK 版本约束用 sdk-version 与 NuGet 版本/范围。本地测试命令:dotnet new install ./path/to/template/root、dotnet new mylib --name TestProject --dry-run、dotnet new mylib --name TestProject --output ./test-output、dotnet build ./test-output/TestProject。打包项目需含 <PackageType>Template</PackageType>,内容置于 content/ 下。
适用场景:从现有项目制作可复用模板、发布前校验 template.json、从零搭建 .template.config、打包模板用于 NuGet 分发。
限制:不用于查找或使用现有模板(应走 template-discovery 或 template-instantiation),也不处理与模板编写无关的 MSBuild 问题。shortName 不得与 dotnet new 子命令冲突,需从 dotnet new --help 读取当前集合,并用 dotnet new list 确认未被占用。identity 用反向 DNS 格式。每个参数应有描述与默认值。需测试所有参数组合。具体收费、价格、平台与效果资料暂未提供。