我正在创建多项目Visual Studio模板。我创建了VSIX软件包项目和向导类库。vSIX项目的源。在向导类库中,我添加了一个Windows表单,以收集用户输入。我需要根据用户输入,将模板附加项目添加到生成的解决方案中。我的解决方案VSTEM PLATER文件看起来像:
<?xml version="1.0" encoding="utf-8"?>
<VSTemplate Version="3.0.0" Type="ProjectGroup" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" xmlns:sdk="http://schemas.microsoft.com/developer/vstemplate-sdkextension/2010">
<TemplateData>
...
</TemplateData>
<TemplateContent>
<ProjectCollection>
<SolutionFolder Name="App">
<ProjectTemplateLink ProjectName="$safeprojectname$.Core">
CoreCore.vstemplate
</ProjectTemplateLink>
...
</SolutionFolder>
</ProjectCollection>
</TemplateContent>
<WizardExtension>
...
</WizardExtension>
</VSTemplate>
,但要出现的是,该文件中未列出的项目未使用模板添加到zip中。所以我想,我有两种处理方法:
- 将我的所有项目添加到Vstemplate中,并以编程方式阻止其中一些项目添加到解决方案中。
- 以某种方式改变构建过程,并迫使Visual Studio在构建过程中添加内容。
我认为第二种方法更加复杂。所以我的最后一个询问是如何停止从Wizzard的模板中生成项目?
好吧,似乎我找到了答案。我创建了其他向导,并在所有儿童.Vstemplate文件中添加了链接。在此向导中,我会检查替换dictionary [" $ safeprojectName $"],如果我不需要添加此项目,我只是扔WizardCanceLedException,并且不会生成该项目。但是该项目的文件夹仍将创建。简单呼叫Directory.delete()修复了它。