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

时间:2019-06-24 02:13:00

标签: asp.net-core visual-studio-2019

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

我想做的事情类似于madskristensens ASP.NET Core Template PackGitHub source code)。但是,我想用VS 2019的“ New Project Dialog”窗口来代替VS 2017。因此,请想象在下面突出显示的位置添加一个附加的ASP.NET Core Web应用程序模板。

New Web Application Dialog

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

1 个答案:

答案 0 :(得分:0)

在VS 2017和2019(社区)之间进行了更多调查之后,我能够成功解决这个问题!哦,哦,我们需要对此做些文档,因为这感觉像个傻瓜!

我能够将ASP.NET Core模板包用作将某些东西放在一起的构造块。对于那些不知道的人,这些扩展程序旨在使用嵌入在扩展程序中的.nupkg文件向Visual Studio添加模板。 .nupkg文件的使用与dotnet new works with custom templates的用法类似。我有一个working prototype on GitHub同时支持 Visual Studio 2017和2019。

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

  1. 构建一个或多个自定义模板,并将其放入*.nupkg文件中
    • 在我的示例中,我的SampleTemplates项目包含三个不同的项目模板。我用.nupkg
    • 生成了dotnet pack
  2. vs-2017.3.host.json文件夹中需要一个.template.config/文件,以便ASP.NET Web应用程序向导可以显示模板。
    • 至少需要满足一项或多项其他要求才能在ASP.NET Web应用程序向导中显示,但是我还没有弄清楚,因为将文件添加到控制台应用程序模板不会导致它出现。我想尝试解决这个问题,尽管如果有人知道我会很乐意的!
  3. template.json需要一个Framework symbol来定义模板支持的.NET Core框架目标的列表。
    • 在进行一些测试时,看起来好像Framework符号没有替代.csproj,因此这就是为什么我的示例中还包含一个TargetFrameworkOverride符号的原因Framework符号替换。
  4. .nupkg文件放入VSIX扩展项目的 root 中,并确保将“ Include in VSIX”标志设置为True。我强调root用户,因为起初我将NuGet软件包放在扩展程序的build\文件夹中,而我的模板没有被拿走。

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