回答

1

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

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

  • 里面你ProjectA.zip模板文件,你会发现ProjectA.csproj,这是该项目的模板
  • ProjectA.csproj你会发现含<ItemGroup><Reference>
  • 其中应该像<Reference Include="ProjectB">
条目

当您从ProjectB模板创建项目时,它的名称将由用户指定,因此您想用$Foo$等替换参数替换ProjectB

这就是它超出纯模板范围的地方:你如何让视觉工作室替换$Foo$?替换是什么?

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

下面是如何获得的模板和自定义向导相处轮廓:

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

在模板的.vstemplate文件,添加<TemplateContent>块下面的下面的代码片段:

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

那会带给你wizar d当项目创建时。在RunStarted方法中,您可以调出一个对话框询问参考,或者您可以使用automationObject参数(实际上是EnvDTE.DTE实例)尝试找到ProjectB项目并在replacementsDictionary中提供它的名称。

相关问题