Vito Arconzo's Blog

.net, .net, .net & windows presentation foundation

Automation e Extensibility in Visual Studio

Nelle ultime settimane ho dovuto ristrutturare alcune solution che erano diventate molto pesanti visto il numero dei progetti contenuti. In questa fase ho dovuto, quindi, effettuare diverse operazioni di riallineamento di reference, modifica di output path ed altro su centinaia di progetti.

Pre questo tipo di operazioni abbiamo a disposizione in Visual Studio diversi componenti di Automation e Estensibility del nostro ambiente di sviluppo.

Per automazione ed extensibility si intende la possibilità di automatizzare a livello di codice le attività ripetitive e di estendere l'ambiente di sviluppo integrato (IDE, Integrated Development Environment) di Visual Studio con strumenti quali i componenti aggiuntivi e le procedure guidate.

Nel mio caso ho utilizzato le Macro di Visual Studio ed in particolare l'interfaccia DTE che è l'oggetto di primo livello che contiene l'istanza del'IDE aperto in quell'istante. Unico problema: utilizzare VBScript come linguaggio di sviluppo ma...per fortuna sono stato in passato uno sviluppatore VB Stick out tongue

Se, come me, c'è la necessità di effettuare un ciclo sui progetti contenuti nella solution aperta l'operazione è molto semplice:

1 For Each project In DTE.Solution.Projects 2 ' Fai qualcosa.... 3 Next

DTE.Solution.Project, quindi, è la collection di oggetti Project contenuti. utilizzando l'oggetto Project possiamo accedere alle varie proprietà del progetto con nome, properties, elementi contenuti, etc...

Altro caso è quello di accedere ai references del progetto:

1 For Each ref As VSLangProj.Reference In project.References 2 ' Rimuove il reference... 3 ref.Remove() 4 5 ' Aggiunge il nuovo reference... 6 prjVSProject.References.Add("percorso dell'assembly") 7 Next

Anche in questo caso abbiamo a disposizione una collection che contiene tutti i references del progetto dove possiamo, ovviamente, aggiungere o eliminare gli elementi.

That's all....per il momento Wink

 

Approfondimenti:

Posted: Sep 18 2008, 01:51 PM by VitoA | with no comments
Filed under: