如何创建自己的 C# 代码脚手架扩展?

Rob*_*ele 6 c# scaffolding asp.net-core

我相信你们大多数人都知道,您可以在 ASP.NET Core Web Api 项目中使用 Nuget 包 Microsoft.VisualStudio.Web.CodeGeneration.Design 来创建具有 GET、POST、PUT 等方法的 Api 控制器类,甚至实体框架代码在那里。

现在我的问题是:如果我想自己写怎么办?我发现了新的 C# 源生成器 ( https://devblogs.microsoft.com/dotnet/new-c-source-generator-samples/ ),但它们在编译时创建代码。我想做这个 NuGet 包所做的同样的事情:通过在 Visual Studio 中的 Powershell 控制台中键入命令来在设计时创建代码,甚至将我自己的选项添加到上下文菜单中,因此代码生成器(Scaffolder)将文件添加到我的我可以查看、编辑和单元测试的项目。

不幸的是,我找不到关于这个主题的太多信息。你能帮我吗?

//编辑:为了明确这一点:我不想修改现有的 ASP.NET Core 脚手架。我想创建自己的扩展,并且正在寻找教程、示例或任何可以帮助我入门的东西:)

Yin*_*qiu 2

首先,找到Templates您的文件夹:C:\Users{username}\.nuget\packages\microsoft.visualstudio.web.codegenerators.mvc\{your project version} 在此输入图像描述

复制粘贴到你的项目中(这里我只保留ControllerGenerator文件夹,你也可以对其他文件夹进行操作)。

在此输入图像描述

然后在您的项目中添加 nuget 包Microsoft.VisualStudio.Web.CodeGeneration.Design

然后就可以自定义该文件夹下的脚手架模板了。

测试结果:

在此输入图像描述