VS 2019 自定义 ASP.NET Core 项目模板

wil*_*m18 3 asp.net-core visual-studio-2019

我想弄清楚如何(或什至是否)我可以创建一个自定义 Visual Studio 项目模板,该模板挂钩到 Visual Studio 2019 中可用的现有 ASP.NET Core Web 应用程序模板?

我想要做的是类似于 madskristenses ASP.NET Core Template Pack ( GitHub 源代码) 的东西。但是,我想为 VS 2019 改进后的“新项目对话框”窗口执行此操作,而不是 VS 2017。所以想象一下在下面突出显示的地方添加一个额外的 ASP.NET Core Web 应用程序模板。

新建 Web 应用程序对话框

我能够创建新的项目模板(用于 Visual Studio 和用于dotnet new),但到目前为止没有任何效果。有没有人能够以这种方式扩展VS 2019,还是在VS 2017之后被取消了?

wil*_*m18 7

在 VS 2017 和 2019(社区)之间进行了更多调查后,我能够成功解决这个问题!伙计,伙计,我们需要一些关于此的文档吗,因为这感觉很糟糕!

我能够使用 ASP.NET Core 模板包作为构建块来组合一些东西。对于那些不知道的人,这些扩展旨在使用.nupkg嵌入在扩展中的文件将模板添加到 Visual Studio 。.nupkg文件的使用类似于dotnet new自定义模板的使用方式。我有一个在GitHub上工作原型,支持双方的Visual Studio 2017年和2019。

现在,如果你和我一样,你可以看看 madskristenses 或我的项目,然后问“这到底是怎么工作的!?” 好问题!以下是我现在有时间填写的详细信息:

  1. 构建一个自定义模板(或多个模板)并将它们放入*.nupkg文件中
    • 在我的示例中,我的SampleTemplates项目包含三个不同的项目模板。我生成.nupkgdotnet pack
  2. 一个vs-2017.3.host.json文件是所需.template.config/文件夹,以便在ASP.NET Web应用程序向导可以显示模板。
    • 至少需要满足 1 个或多个其他要求才能在 ASP.NET Web 应用程序向导中显示,但我还没有弄清楚,因为将文件添加到控制台应用程序模板不会导致它出现。我想尝试解决这个问题,尽管如果有人已经知道,我很乐意提供帮助!
  3. template.json需要一个框架符号来定义由模板支持.NET框架的核心目标清单。
    • 在做一些测试时,看起来Framework符号没有替换为.csproj,这就是为什么我的示例还包含一个符号替换TargetFrameworkOverrideFramework符号。
  4. .nupkg文件放入VSIX 扩展项目的根目录,并确保将“包含在 VSIX”标志设置为True. 我强调 root 是因为最初我将 NuGet 包放置build\在我的扩展中的一个文件夹中,而我的模板没有被选中。

我将尝试将 README 放在我的示例项目中,以更好地概述完成此操作所需的所有细节。手指交叉这可以帮助某人(或者至少在将来当我不可避免地忘记我是如何做到这一点时帮助我)!

更新

截至 2020 年 9 月 2 日,Visual Studio 团队发布了一项实验性功能以dotnet new在 Visual Studio 中包含模板。我已经用它做了一些非常少的测试,它看起来确实有效,但它并不完美。例如,我创建了一个dotnet new模板来支撑多个.csproj文件和.sln文件,但输出与我的解决方案不太匹配。

这是描述公告的 Visual Studio 博客文章:https : //devblogs.microsoft.com/dotnet/net-cli-templates-in-visual-studio/