gpt4 book ai didi

asp.net-core - VS 2019 自定义 ASP.NET Core 项目模板

转载 作者:行者123 更新时间:2023-12-04 20:16:21 24 4
gpt4 key购买 nike

我正在尝试弄清楚如何(或者即使)我可以创建一个自定义 Visual Studio 项目模板,该模板可以挂接到 Visual Studio 2019 中可用的现有 ASP.NET Core Web 应用程序模板?

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

New Web Application Dialog

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

最佳答案

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

我能够使用 ASP.NET Core 模板包作为构建 block 来组合一些东西。对于那些不知道的人,这些扩展旨在使用 .nupkg 将模板添加到 Visual Studio嵌入在扩展中的文件。 .nupkg的使用文件类似于 dotnet new works with custom templates .我有一个 working prototype on GitHub 同时支持 Visual Studio 2017 和 2019。

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

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

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

更新

截至 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/

关于asp.net-core - VS 2019 自定义 ASP.NET Core 项目模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56729123/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com