VSX: ProjectFlavor sola VSTemplates voce?
-
19-09-2019 - |
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 { ... }
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.