Domanda

In Visual Studio 2005, 2008, e il 2010, è possibile definire un modello di elemento che appare solo nella finestra di dialogo voce Add per i progetti di un particolare ProjectFlavor? Preferirei non ingombrare tutti gli altri progetti non collegati Aggiungi Articoli finestra di dialogo se posso farne a meno.

Sembra che il <ProjectType>CSharp</ProjectType> è un'enumerazione fisso e non riesco a trovare alcun posto per un guid ProjectFlavor o in altro modo.

Non vedo alcun esempio di altri prodotti che mostrano come moderazione, ma voglio essere sicuro.

=====

OK, punta di Aaron è molto promettente, ma il mio primo tentativo non è riuscito.

Nel .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>

E sulle 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 { ... }
È stato utile?

Soluzione

Sì questo è possibile e ci sono un paio di modelli voce "nella casella" che fanno questo. Ad esempio, si noterà che i C # o VB voce modelli per gli articoli del WPF (Pagina, Finestra, FlowDocument, ecc ...) vengono visualizzati solo se si sta lavorando con un progetto WPF-aromatizzato.

Il trucco è quello di specificare lo stesso TemplateGroupID in ogni vstemplate file, quindi specificare lo stesso TemplateGroupID nella registrazione del vostro sapore progetto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top