【问题标题】:How do I add Same Solution Project References when exporting Templates in Visual Studio?在 Visual Studio 中导出模板时如何添加相同的解决方案项目引用?
【发布时间】:2012-07-06 08:22:23
【问题描述】:

我有一个包含多个项目的解决方案,我们称它们为 ProjectA 和 ProjectB。我需要 ProjectA 来引用 ProjectB,但是当我“导出模板”时,我似乎无法保留引用。我想做的是让它在我创建新项目时为我创建引用,然后自动将其命名为我输入的内容。

【问题讨论】:

    标签: visual-studio-2010 visual-studio project-template project-reference


    【解决方案1】:

    这稍微超出了纯 Visual Studio 模板的范围。

    Visual Studio 模板支持模板的替换参数,所以你可以做的是:

    • 在您的ProjectA.zip 模板文件中,您将找到ProjectA.csproj,这是项目的模板
    • ProjectA.csproj 中,您将找到一个包含<Reference> 条目的<ItemGroup>
    • 其中应该有一个类似<Reference Include="ProjectB">的条目

    当您从 ProjectB 模板创建项目时,其名称将由用户指定,因此您希望将 ProjectB 替换为 $Foo$ 之类的替换参数。

    这就是它超出纯模板范围的地方:你如何告诉 Visual Studio 替换 $Foo$?替代品会是什么?

    您在这里唯一的选择是使用自定义向导,该向导要么查找 ProjectB 类型的项目,要么向用户询问。

    以下是如何让模板和自定义向导相处的大纲:

    • 创建一个 VSIX 包项目。
    • 确保将[ProvideBindingPath] 属性添加到您的包中。这是注册自定义向导所必需的(否则您需要将其安装到 GAC,以便 VS 找到它)
    • 创建你的向导,它应该实现Microsoft.VisualStudio.TemplateWizard.IWizard
    • 将您的模板添加到解决方案中,并将其作为 ProjectTemplate 资产添加到您的包的 vsixmanifest 中

    在模板的 .vstemplate 文件中,在 <TemplateContent> 块下方添加以下 sn-p:

    <WizardExtension>
      <Assembly>Your.Packages.Assembly</Assembly>
      <FullClassName>Your.Wizard</FullClassName>
    </WizardExtension>
    

    这将在创建项目时显示您的向导。您可以在RunStarted 方法中打开一个对话框,要求提供参考,或者您可以使用automationObject 参数(实际上是EnvDTE.DTE 实例)尝试查找ProjectB 项目并在replacementsDictionary.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-24
      • 1970-01-01
      • 2018-08-03
      • 2017-07-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多