我有一个包含多个项目的解决方案,我们称之为ProjectA和ProjectB。 我需要ProjectA引用ProjectB,但是当我“导出模板”时,似乎无法保留引用。 我想要做的是在创建新项目时自动为我创建引用,并将其自动命名为我输入的内容。
我有一个包含多个项目的解决方案,我们称之为ProjectA和ProjectB。 我需要ProjectA引用ProjectB,但是当我“导出模板”时,似乎无法保留引用。 我想要做的是在创建新项目时自动为我创建引用,并将其自动命名为我输入的内容。
这略微超出了纯Visual Studio模板的范围。
Visual Studio模板支持模板替换参数,因此您可以执行以下操作:
ProjectA.zip
模板文件中,您会找到ProjectA.csproj
,它是项目的模板ProjectA.csproj
中,您将找到包含<Reference>
条目的<ItemGroup>
<Reference Include="ProjectB">
的条目当您从ProjectB模板创建项目时,其名称将由用户指定,因此您想要使用替换参数$Foo$
替换ProjectB
。
这就是纯模板范围之外的地方:您如何告诉Visual Studio替换$Foo$
?替换是什么?
您唯一的选择是使用自定义向导,该向导要么查找ProjectB类型的项目,要么向用户请求该项目。
以下是如何使模板和自定义向导相互配合的概述:
[ProvideBindingPath]
属性添加到您的包中。这是必需的,以便注册自定义向导(否则您需要将其安装到GAC中,以便VS能够找到它)。Microsoft.VisualStudio.TemplateWizard.IWizard
接口。在您的模板的.vstemplate文件中,在<TemplateContent>
块下面添加以下代码:
<WizardExtension>
<Assembly>Your.Packages.Assembly</Assembly>
<FullClassName>Your.Wizard</FullClassName>
</WizardExtension>
RunStarted
方法中,您可以打开一个对话框来询问参考资料,或者您可以使用 automationObject
参数(实际上是一个 EnvDTE.DTE
实例)来尝试查找 ProjectB 项目并在 replacementsDictionary
中提供其名称。