如何将自定义项目模板和向导集成到Visual Studio包中?

时间:2014-10-13 08:41:23

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

现状

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

目标

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

问题

网上关于如何创建和扩展VS Package的信息很少。我跟着this tutorial。但是我已经创建了一个基本的Project模板,因为我不知道如何扩展它,我认为使用向导导入已经创建的Project模板要容易得多。

换句话说

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

额外信息

我读到在新版本的VS和Mac中不推荐使用Add ins。因此我选择了VS Package Project System(比自定义模板更具可扩展性)。我看到了一个关于A Project SubType的解释(又名ProjectFlavor - 允许你自定义或调整Visual Studio项目系统的行为)但我没有找到任何教程或样本,除了项目的托管包框架(对我来说太复杂了)。

1 个答案:

答案 0 :(得分:7)

假设

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

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

    您最终延期的一般设计如下:

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

    此设计允许您通过创建 .vsix 的新版本,在将来的任何时候更新模板,向导或两者。

    实施

    由于步骤很多,我在GitHub上创建了一个存储库来显示完整的过程。

    https://github.com/tunnelvisionlabs/VsixWizardSample