2010-02-10 1 views
1

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

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

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

=====

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

В .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 { ... } 

ответ

3

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

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

+0

Спасибо Аарон, можете ли вы, пожалуйста, проверить дополнительные форматированные материалы наверху для последующей работы? –

+0

Привет, Аарон, какие-либо подробности об этом? –

+0

В приведенном выше, когда вы говорите «В VSCT», я предполагаю, что вы имели в виду «В VSTemplate». Попробуйте добавить к атрибуту LanguageVsTemplate = "CSharp". –

 Смежные вопросы

  • Нет связанных вопросов^_^