VSX: элемент только для ProjectFlavor VSTemplates? - PullRequest
1 голос
/ 10 февраля 2010

В Visual Studio 2005, 2008 и 2010 возможно ли определить шаблон элемента, который отображается только в диалоговом окне «Добавить элемент» для проектов определенного ProjectFlavor? Я бы предпочел не загромождать диалоговое окно «Добавить элементы» других не связанных проектов, если смогу помочь.

Похоже, что <ProjectType>CSharp</ProjectType> является фиксированным перечислением, и я не могу найти место для руководства ProjectFlavor или иным образом.

Я не вижу примеров других продуктов, демонстрирующих такую ​​сдержанность, но хочу убедиться.

=====

Хорошо, совет Аарона очень многообещающий, но моя первая попытка не удалась.

В .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 Ответ

3 голосов
/ 10 февраля 2010

Да, это возможно, и есть несколько шаблонов элементов "в коробке", которые делают это. Например, вы заметите, что шаблоны элементов C # или VB для элементов WPF (Page, Window, FlowDocument и т. Д.) Отображаются только в том случае, если вы работаете с проектом со вкусом WPF.

Хитрость заключается в том, чтобы указать один и тот же TemplateGroupID в каждом файле vstemplate, а затем указать этот же TemplateGroupID при регистрации разновидности вашего проекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...