如何在新版Visual Studio中创建自定义脚手架以简化微服务开发?
自定义实体脚手架方案(适配新版Visual Studio)
一、Visual Studio内置的自定义脚手架能力
新版VS(2019/2022)原生支持扩展脚手架,核心依托ASP.NET Core Scaffolding的自定义模板机制,不用额外装工具就能实现:
- 在项目根目录创建
Templates/Scaffolders文件夹,把接口、服务、控制器的模板文件放进去(用{{ClassName}}这类占位符替换实体类名,固定代码直接保留)。 - 同目录下创建
scaffolding.json,配置脚手架的名称、生成文件规则、关联的EF实体模型类型。 - 配置完成后重启VS,在右键菜单的「添加→新建项→脚手架」里就能看到自定义选项,选好目标实体即可一键生成三类文件。
二、简化开发的NuGet包
如果不想手动写模板配置,这些包可以帮你快速搭建脚手架:
- Scaffolding.Core:封装了脚手架扩展的基础API,能自动绑定EF实体的元数据,替换模板里的类名、命名空间等变量,减少重复配置工作。
- CodeGeneration.Roslyn:基于Roslyn编译引擎,能在编译阶段自动扫描EF实体,批量生成对应的接口、服务和控制器,还能自定义生成逻辑,适合大规模微服务场景。
三、快速上手示例(基于内置脚手架)
编写模板文件(以服务接口为例):
创建I{{ClassName}}Service.cs.t4文件:using YourApp.Entities; using YourApp.BaseServices; namespace YourApp.Services { public interface I{{ClassName}}Service : IBaseService<{{ClassName}}> { // 基类已覆盖所有逻辑,无需额外代码 } }服务实现和控制器的模板依葫芦画瓢,替换类名占位符即可。
配置
scaffolding.json:{ "$schema": "https://json.schemastore.org/scaffolding", "name": "Entity Service/Controller Scaffolder", "description": "一键生成实体对应的接口、服务和控制器", "templates": [ { "sourceFile": "Templates/Scaffolders/I{{ClassName}}Service.cs.t4", "outputFile": "Services/I{{ClassName}}Service.cs" }, { "sourceFile": "Templates/Scaffolders/{{ClassName}}Service.cs.t4", "outputFile": "Services/{{ClassName}}Service.cs" }, { "sourceFile": "Templates/Scaffolders/{{ClassName}}Controller.cs.t4", "outputFile": "Controllers/{{ClassName}}Controller.cs" } ], "modelType": "Microsoft.EntityFrameworkCore.Metadata.IEntityType" }重启VS后,右键项目→添加→脚手架,找到你定义的选项,选择要生成的EF实体,确认路径就能自动生成所有文件。
内容的提问来源于stack exchange,提问作者Twomz
相关产品推荐
相关产品推荐

