如何防止项目从模板生成?

时间:2014-01-31 17:11:13

标签: c# visual-studio-2012 visual-studio-templates

我正在创建多项目视觉工作室模板。我创建了VSIX包项目和Wizard类库。在VSIX项目的source.extension.vsixmanifest文件中将这些项目添加为资产。在向导类库中,我添加了一个Windows窗体,用于收集用户输入。我需要根据用户输入从模板附加项目添加生成的解决方案。 我的解决方案vstemplate文件看起来像这样:

<?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">
            Core\Core.vstemplate
          </ProjectTemplateLink>
          ...
       </SolutionFolder>
     </ProjectCollection>
   </TemplateContent>
   <WizardExtension>
     ...
   </WizardExtension>
</VSTemplate>

但问题是,该文件中未列出的项目未添加到带模板的zip中。 所以我想,我有两种方法可以解决这个问题:

  1. 将我的所有项目添加到VSTEMPLATE,并以编程方式阻止其中一些项目添加到解决方案中。
  2. 以某种方式更改构建过程并强制visual studio在构建期间向zip文件添加内容。
  3. 我认为第二种方式更复杂。所以我最后的问题是如何停止从Wizzard模板生成项目?

1 个答案:

答案 0 :(得分:0)

好吧,我似乎找到了答案。我创建了额外的向导,并在所有子.vstemplate文件中添加了链接。在这个向导中,我检查replacementsDictionary [“$ safeprojectname $”],如果我不需要添加这个项目,我只需抛出WizardCanceledException,就不会生成这个项目。但仍将创建此项目的文件夹。简单的调用Directory.Delete()修复它。