VSX:ProjectFlavor专用项VSTemplates?

时间:2010-02-10 03:10:03

标签: vsx visual-studio-templates

在Visual Studio 2005,2008和2010中,是否可以定义仅出现在特定ProjectFlavor项目的“添加项”对话框中的项模板?如果我能提供帮助,我宁愿不要混淆所有其他不相关项目的“添加项目”对话框。

似乎<ProjectType>CSharp</ProjectType>是一个固定的枚举,我找不到ProjectFlavor guid或其他任何地方。

我没有看到任何其他产品显示出这种限制的例子,但我想确定。

=====

好的,Aaron的小费很有希望,但我的第一次尝试是不成功的。

在.vstemplate中:

<TemplateData>
    <Name>MyProject A File</Name>
    <Description>MyProject A File to do stuff</Description>
    <Icon>A.ico</Icon>
    <TemplateID>TemplateID_A</TemplateID>
    <TemplateGroupID>MyTemplateGroupID</TemplateGroupID>
    <ProjectType>CSharp</ProjectType>
    <RequiredFrameworkVersion>2.0</RequiredFrameworkVersion>
    <SortOrder>20</SortOrder>
    <NumberOfParentCategoriesToRollUp>1</NumberOfParentCategoriesToRollUp>
    <DefaultName>Template_A.cs</DefaultName>
    <ProvideDefaultName>true</ProvideDefaultName>
    <ShowByDefault>false</ShowByDefault>
</TemplateData>
<TemplateContent>
    <ProjectItem ReplaceParameters="true">Template_A.cs</ProjectItem>
</TemplateContent>

在package.cs上:

// [ProvideProjectItem(typeof(MyProjectFactory), "MyTemplateGroupID", 
//    @"Templates\ProjectItems", 600)] // Took this out.

[ProvideProjectFactory(typeof(MyProjectFactory), 
    "My Project", "My Project Files (*.csproj);*.csproj", 
    null, null, @"Templates\Projects", 
    LanguageVsTemplate = "CSharp", 
    NewProjectRequireNewFolderVsTemplate = true, 
    TemplateGroupIDsVsTemplate="MyTemplateGroupID",
    TemplateIDsVsTemplate = "TemplateID_A,TemplateID_B")]
public sealed class MyPackage : Package { ... }

1 个答案:

答案 0 :(得分:3)

是的,这是可能的,并且“框中”有一些项目模板可以执行此操作。例如,您会注意到,只有在使用WPF风格的项目时,才会显示WPF项目(页面,窗口,FlowDocument等等)的C#或VB项目模板。

诀窍是在每个vstemplate文件中指定相同的TemplateGroupID,然后在注册项目风格时指定相同的TemplateGroupID。