Quando creiamo un nuovo item in Visual Studio, ad esempio una classe,
otteniamo un file che contiene già alcuni elementi presi dal corrispondente template:
Con Visual Studio è sempre possibile creare dei template personali, da riutilizzare a piacere, con File–>Export Template… ma questa non è la soluzione migliore quando si desidera modificare item “standard” come Classe.cs, che godono di alcuni automatismi, come ad esempio SHIFT-ALT-C per la creazione al volo di una classe.
Volendo dunque modificare i template di Visual Studio, occorre procedere nel seguente modo:
- Identificare la cartella contenente il template da modificare
- Modificare il template
- Ricostruire la cache dei template
Identificare la cartella contenente il template da modificare
Visual Studio mantiene tutti gli item template (esclusi quelli da noi eventualmente creati ex novo con l’Export Template, che invece stanno nella nostra cartella documenti) in:
- C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\ItemTemplates (per i sistemi a 64 bit)
- C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\ItemTemplates (per i sistemi a 32 bit)
All’interno di questa cartella principale, i vari template sono organizzati in una struttura di sottocartelle che si riflette (secondo le informazioni contenute nel corrispondente file XML di cui parleremo tra poco) nella finestra di creazione di un nuovo item in Visual Studio:
Ogni template è contenuto nella corrispondente cartella di localizzazione (che per la localizzazione anglo americana en-US è la “1033”) ed è composto da vari file, contenuti in un archivio zip. Ad ogni template è associato un file XML di tipo .vstemplate che definisce ne definisce proprietà e comportamento.
Ad esempio, il template “ItemTemplates\CSharp\Code\1033\Class.zip” è formato dai file “Class.cs” e “Class.vstemplate”:
Purtroppo non è sempre semplice identificare qual’è il template da modificare, perché vi possono essere più template per uno stesso item. Sarà Visual studio a proporci di volta in volta quello corrispondente al contesto in cui ci troviamo, utilizzando le informazioni contenute nel file XML che descrive il template.
Per fare un esempio, prendiamo il template “SilverlightClass.zip” e confrontiamolo col precedente template (“Class.zip”)
Possiamo notare che il file XML ha le propietà <Name>, <Description> e <Icon> con gli stessi valori del precedente template e quindi anch’esso rappresenta “Class.cs”.
Al contempo, però, definisce due elementi in più:
- <ShowByDefault> (con valore pari a “false”)
- <TemplateGroupID> (con valore pari a “Silverlight”)
La prima proprietà fa si che non vi siano due elementi Class.cs nell’elenco degli item presenti nella finestra Visual Studio “Add New Item” e la seconda proprietà dichiara che nel caso in cui il progetto nel quale stiamo creando il nuovo item è di tipo Silverlight, allora quest’ultimo template dev’essere usato nella costruzione di Class.cs al posto di quello precedente, più generico perché privo dell’elemento <TemplateGroupID>.
La conoscenza di questi meccanismi è necessaria per identificare quale specifico template dobbiamo modificare per ottenere ciò che desideriamo.
Modificare il template
Tornando al nostro esempio, ipotizziamo di voler aggiungere il riferimento a System.Linq anche nelle classi costruite in progetti Silverlight.
In generale, si dovrà:
- Fare una copia di backup dell’archivio da modificare (non si sa mai…)
- Copiare e scompattare il file “ItemTemplates\CSharp\Code\1033\SilverlightClass.zip” in una cartella di lavoro
- Aprire la cartella di lavoro e modificare il file SilverlightClassClass.cs come segue:
- Selezionare tutti i file contenuti nella cartella di lavoro e col testo destro esegire “Invia a | Cartella compressa”.
- Sostituire l’archivio zip originale con l’archivio testé creato (che deve ovviamente avere lo stesso nome dell’archivio originale).
Ricostruire la cache dei template
Dopo aver chiuso ogni istanza di Visual Studio, occorre:
- Aprire il Visual Studio Command prompt come Amministratore (Start | All Programs | Microsoft Visual Studio | Visual Studio Tools | Visual Studio Command Prompt)
- Eseguire “devenv /installvstemplates”.
A questo punto non resta che provare a creare il nuovo item e verificare che tutto funzioni.