2009-09-03 5 views
1

J'ai un modèle qui ajoute une nouvelle entrée au menu contextuel "Ajouter-> Nouvel élément" sur un projet dans l'explorateur de solutions dans Visual Studio.Création d'un modèle d'élément pour Visual Studio 2008, avec des dépendances de fichiers, est-ce possible?

J'ai déjà créé le modèle, le placez dans mon répertoire ItemTemplates sous mon dossier de documents, et cela fonctionne, dans le sens où je peux ajouter de nouveaux éléments au projet via le modèle.

Cependant, le modèle se compose de 3 fichiers:

<filename>.controller 
<filename>.Designer.cs 
<filename>.cs 

Ceux-ci sont ajoutés au projet au même niveau, mais je voudrais avoir le même genre de hiérarchie que vous obtenez lorsque vous ajoutez un formulaire au projet, où le fichier .Designer.cs est placé en tant que sous-nœud sous le fichier .cs.

Fondamentalement, c'est ce que le projet ressemble à:

TestProject 
    +- Properties 
    +- References 
    +- App.config 
    +- Program.cs 
    +- MyTestController.controller 
    +- MyTestController.Designer.cs 
    +- MyTestController.cs 

alors que je veux qu'il ressemble à ceci:

TestProject 
    +- Properties 
    +- References 
    +- App.config 
    +- Program.cs 
    +- MyTestController.controller 
    +- MyTestController.Designer.cs 
    +- MyTestController.cs 

est-ce possible? Si oui, que dois-je changer dans mon fichier .vstemplate pour obtenir ce comportement?

Voici le fichier .vstemplate j'ai ajouté au fichier zip modèle:

<VSTemplate Version="2.0.0" Type="Item" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005"> 
    <TemplateData> 
     <Name>LVK.NET New Controller</Name> 
     <Description>Adds an business logic controller class to the project.</Description> 
     <Icon Package="{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}" ID="4522" /> 
     <ProjectType>CSharp</ProjectType> 
     <SortOrder>10</SortOrder> 
     <DefaultName>Controller.controller</DefaultName> 
    </TemplateData> 
    <TemplateContent> 
     <References> 
      <Reference> 
       <Assembly>System</Assembly> 
      </Reference> 
      <Reference> 
       <Assembly>System.Data</Assembly> 
      </Reference> 
      <Reference> 
       <Assembly>System.Xml</Assembly>:\ 
      </Reference> 
      <Reference> 
       <Assembly>LVK.Core</Assembly> 
      </Reference> 
      <Reference> 
       <Assembly>LVK.BusinessLogic</Assembly> 
      </Reference> 
     </References> 
     <ProjectItem ReplaceParameters="true">Controller.controller</ProjectItem> 
     <ProjectItem ReplaceParameters="true" TargetFileName="$fileinputname$.Designer.cs">Controller.Designer.cs</ProjectItem> 
     <ProjectItem ReplaceParameters="true" TargetFileName="$fileinputname$.cs">Controller.cs</ProjectItem> 
    </TemplateContent> 
</VSTemplate> 

Répondre

1

Précisez votre "hierachy" dans le projectfile (par exemple .csproj):

<ItemGroup> 
    <Compile Include="Controller.controller" /> 
    <Compile Include="Controller.cs"> 
    <DependentUpon>Controller.controller</DependentUpon> 
    </Compile> 
    <Compile Include="Controller.Designer.cs"> 
    <DependentUpon>Controller.controller</DependentUpon> 
    </Compile> 
</ItemGroup> 

et ajoutez la fichier de projet à votre .vstemplate

<TemplateContent> 
    <Project TargetFileName="Project1.csproj" File="Project1.csproj" ReplaceParameters="true"> 
     <ProjectItem ReplaceParameters="false" TargetFileName="Controller.controller">Controller.controller</ProjectItem> 
     <ProjectItem ReplaceParameters="true" TargetFileName="Controller.cs">Controller.cs</ProjectItem> 
     <ProjectItem ReplaceParameters="true" TargetFileName="Controller.Designer.cs">Controller.Designer.cs</ProjectItem> 
    </Project> 
    </TemplateContent> 

Fait ;-)

Questions connexes