2017-03-17 4 views
0

Je souhaite créer un modèle de projet tel que le nom de la classe corresponde au nom du projet fourni par l'utilisateur.Modification du nom de la classe dans le modèle de projet VS

Ma classe est définie comme (dans l'exportation ProjectTemplate):

namespace $safeprojectname$.ViewModels 
{ 
    [Export("$safeprojectname$.ViewModels.TestClassViewModel ",typeof(ContentPaneViewModel))] 
    [PartCreationPolicy(CreationPolicy.NonShared)] 
    public class TestClassViewModel : ContentPaneViewModel 
    { 
     [ImportingConstructor] 
     public TestClassViewModel ([Import("$safeprojectname$.Views.TestClassView")]IView theView) 
     { 
      View = theView; 
      View.ViewModel = this; 
     } 
    } 
} 

Si mon ProjectName est ABCProj, je veux TestClassViewModel à créer comme ABCProjViewModel. Pour réaliser cela, j'ai mis à jour le fichier de classe dans le modèle de projet en tant que:

namespace $safeprojectname$.ViewModels 
{ 
    [Export("$safeprojectname$.ViewModels.$safeprojectname$",typeof(ContentPaneViewModel))] 
    [PartCreationPolicy(CreationPolicy.NonShared)] 
    public class $safeprojectname$: ContentPaneViewModel 
    { 
     [ImportingConstructor] 
     public $safeprojectname$([Import("$safeprojectname$.Views.TestClassView")]IView theView) 
     { 
      View = theView; 
      View.ViewModel = this; 
     } 
    } 
} 

Enregistré les modifications et recréé le fichier zip de modèle de projet. Mais quand j'ai créé un projet en utilisant ce modèle, j'ai toujours le nom de classe comme TestClassViewModel.

Qu'est-ce que je fais mal ici?

Merci,

Répondre

0
RDV

J'ai compris une meilleure façon de le faire:

1. Install visual studio extensibility tools for creating templates. 
2. Create Project & Item templates separately. 
3. In Project template just create folders, references, and resource dictionary, if any. 
4. Create class files in item template 
5. Make sure when putting a variable like $safeitemname$ or $projectname$, make sure .vstemplate & project.csproj has the same filename. 

Merci,

RDV