Frage

In Visual Studio 2005, 2008 und 2010 ist es möglich, eine Elementvorlage zu definieren, dass nur für Projekte eines bestimmten ProjectFlavor im Elemente hinzufügen Dialog erscheint? Ich möchte lieber nicht Krempel alle anderen nicht verwandten Projekten Add Items Dialog wenn ich ihm helfen kann.

Es scheint, dass die <ProjectType>CSharp</ProjectType> eine feste Aufzählung ist und ich kann nicht an jedem Ort für einen ProjectFlavor guid oder sonst finden.

Ich sehe keine Beispiele für andere Produkte wie Zurückhaltung zeigen, aber ich mag sicher machen.

=====

OK, Aaron Tipp ist sehr vielversprechend, aber mein erster Versuch ist nicht erfolgreich.

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

Und auf dem 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 { ... }
War es hilfreich?

Lösung

Ja, das ist möglich, und es gibt ein paar Elementvorlagen „in der Box“, die dies tun. Zum Beispiel, werden Sie feststellen, dass die C # oder VB Elementvorlagen für WPF Artikel (Seite, Fenster, Flowdocument, etc ...) werden nur angezeigt, wenn Sie mit einem WPF-aromatisierten Projekt arbeiten.

Der Trick ist, das gleiche TemplateGroupID in jedem vstemplate angeben Datei, und geben Sie dann das gleiche TemplateGroupID in der Registrierung Ihres Projekts Geschmack.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top