【问题标题】:How to integrate a custom Project Template and Wizard into Visual Studio package?如何将自定义项目模板和向导集成到 Visual Studio 包中?
【发布时间】:2014-10-13 08:41:23
【问题描述】:

现状

我创建了一个带有附加向导的自定义项目模板,该向导会询问用户一些选项并生成一些代码(例如:INIT 方法、一些对象初始化)。我已经通过 VSIX 项目部署了它,一切都很好。

目标

我还有一个空的 VS 包。所以我的问题是:如何将模板和向导导入包中?因为我希望以后能够使用菜单项等更新软件包。

问题

网上关于如何创建和扩展 VS 包的信息很少。我关注了this tutorial。但是在那里我创建了一个基本的项目模板,由于我不知道如何扩展它,我认为使用向导导入已经创建的项目模板会容易得多。

换句话说

我希望我的最终产品与 C++ win32 控制台应用程序(出现在 c++ 部分中。单击时 - 向导支持用户根据自己的偏好生成新项目)相同,但也适用于 C#。

额外信息

我了解到,在较新版本的 VS 和宏中,插件已被弃用。因此我选择了 VS Package Project System(比自定义模板更具扩展性)。我看到了一些关于 A Project SubType(又名 ProjectFlavor - 让您自定义或调整 Visual Studio 项目系统的行为)的解释,但我没有找到任何教程或示例,除了项目的托管包框架(这对我来说太复杂了)。

【问题讨论】:

  • 请修复您的链接。

标签: visual-studio-addins envdte vsx vspackage vs-extensibility


【解决方案1】:

假设

为简单起见,我将假设以下内容。

  1. 您正在创建一个项目模板,它为 Visual Studio已经支持的项目系统创建一个新项目。例如,您可能正在创建一个创建新 C# 项目的模板。
  2. 您正在使用 Visual Studio 2012 或更高版本来创建您的扩展程序。
  3. 您希望此扩展可在 Visual Studio 2012 及更高版本中使用
  4. 您对项目的向导自定义比通过创建“简单”项目然后自动安装一个或多个 NuGet 包(作为创建新项目的一部分安装 NuGet 包不需要自定义向导)执行的操作更加复杂)。

设计策略

最终扩展的总体设计如下。

  • 您的扩展将包含项目模板和包含您的IWizard 实现的程序集。
  • 该扩展程序将被捆绑到一个 .vsix 文件中以供分发。

此设计允许您在未来任何时候更新您的模板、向导或两者,只需创建一个新版本的 .vsix

实施

由于步骤很多,所以我在GitHub上创建了一个仓库来展示完整的过程。

https://github.com/tunnelvisionlabs/VsixWizardSample

【讨论】:

  • 非常感谢您的时间和精力。到目前为止,除了你之外,没有人回复我。这个例子是直截了当的。此外,它不处理任何 GAC 签名,正如我在 .vstemplate 文件中看到的那样。但我已经有了完全相同的解决方案。我在询问如何将它们添加到基本的项目系统 VS 包中。我会解释你为什么,也许你可以给我你的建议。
  • 我不仅需要为特定项目类型提供模板,还需要为其他项目类型提供模板。(类库、控制台应用程序、c++ 和 c# 中的表单应用程序)。此外,我希望以后能够通过添加一些菜单工具箱和代码荧光笔等来开发这个扩展。但我现在不知道,所以我更喜欢让它更通用,而不是仅仅创建一个普通的模板。跨度>
  • 备注:我希望这个扩展不仅可以用于 VS 12,还可以用于 VS 2005 VS 2008 和 VS 2010。我的公司拥有 2005 年和 2010 年的许可证
  • @Vla(回复:第二条评论)只需分发新版本的 VSIX 即可更新 VSIX 扩展。您可以更新需要更改的任何部分。此外,您可以在同一个扩展中包含针对多个项目系统的多个模板。
  • @Vla (Re: the 1st comment) A project system VS Package 与这个问题完全无关(我相信你误解了他们的用例)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-20
  • 2020-01-19
相关资源
最近更新 更多