Anche se non è ancora disponibile una beta per la prossima versione di Visual Studio (nome in codice Visual Studio 11), nome in codice dev11, è possibile iniziare a familiarizzare con le novità utilizzando la developer preview (dev11), uscita in concomitanza con la conferenza Build, dove è stato presentato il nuovo sistema Windows 8.
Questa versione è piuttosto stabile ed è possibile già iniziare ad utilizzarla con progetti reali, con discreta soddisfazione anche per quanto riguarda le performance; ricordiamo comunque che si tratta di una Pre-Beta version, per cui non c'è da attendersi il livello di qualità di una RTM. Il suggerimento quindi è quello di non utilizzarla su un sistema di prdoduzione me in una macchina virtuale, per evitare problemi di disinstallazione.
In questo articolo vedremo quindi le novità più importanti che riguardano l'ambiente di sviluppo, in modo da essere subito operativi con la versione ufficiale, quando verrà rilasciata.
Compatibile con Visual Studio 2010
La novità sicuramente di maggiore impatto è la compatibilità tra il formato di progetto di dev11 e Visual Studio 2010. Quindi possiamo aprire una solution di Visual Studio 2010 e lavorarci senza convertire il progetto, ma sfruttando comunque tutte le novità del nuovo IDE.
Questa funzionalità è ottima per favorire una migrazione graduale verso il nuovo ambiente, senza paura di non poter tornare indietro: in un team alcune persone possono iniziare ad utilizzare la nuova versione, mentre le altre continuano a lavorare con la vecchia senza problemi.
Tutto questo vale solamente se si utilizza il framework 4.0 o inferiore, perché se i progetti vengono convertiti alla versione 4.5 non si può più utilizzare VS2010, perché in questo caso si sta proprio utilizzando un compilatore differente.
Toolbar semplificata
Un'altra novità è la toolbar più "leggera" rispetto alla versione precedente. Lo scorso anno è stato effettuato un test per capire quali sono i comandi realmente più utilizzati in Visual Studio, in modo da visualizzare per default solamente le funzionalità più importanti. Il numero di bottoni presenti è stato ridotto al minimo, nonostante ciò molto spesso non si ha bisogno di altro.
Naturalmente è possibile aggiungere nuovamente tutti i vecchi bottoni che erano visibili di default.
Il solution navigator
All'apertura di un progetto, si nota subito che la classica finestra "Solution Explorer" non è più presente, ma è stata sostituita dalla "Solution Navigator", già integrata nei Productivity Power Tools disponibili per VS2010.
Chi già usa i Productivity Power Tools noterà subito che alcune delle novità introdotte in dev11 non sono altro che funzionalità già presenti nei Power Tools che sono state prese, migliorate ed incluse nel prodotto base.
Se ad un primo aspetto il Solution Navigator appare simile alla vecchia versione, un attento esame rivelerà molte funzionalità interessanti, prima tra tutte la ricerca. In questa nuova versione di Visual Studio è stata posta molta attenzione nell'aggiungere funzionalità di "ricerca" in varie parti dell'IDE in modo da facilitare allo sviluppatore il trovare le informazioni che cerca; nel solution navigator potete quindi digitare un testo per impostare un filtro e visualizzare solamente i file della solution che soddisfano quel filtro.
Un'altra interessante funzionalità è l'inclusione di una rappresentazione dettagliata del contenuto di un file. Se nella vecchia versione il livello massimo di dettaglio dell'albero era rappresentato dai singoli file, ora si può invece andare a visualizzare nell'albero della solution anche i singoli metodi delle classi. Ciò consente navigazione semplificata di classi complesse, o di progetti in cui un singolo file contiene più di una classe.
Figura 4. Il livello di dettaglio del solution navigator arriva ai singoli metodi e proprietà delle classi
(clic per ingrandire)
Un'altra importante novità è la Preview Window, il cui scopo è limitare il numero di file che vengono aperti durante la navigazione nel codice. Molto spesso ci si trova infatti a "navigare" nella solution effettuando doppio click per aprire un file non per modificarlo, ma solamente per vedere il suo contenuto, finendo solitamente con l'avere aperte decine e decine di file.
La nuova funzionalità di "preview" consiste invece nel fare un singolo click nel Solution Navigator, per aprire il in modalità preview. Questa modalità consente di avere una finestra unica di "preview" dove saranno aperti i file.
In altre parole il singolo click nel Solution Navigator permette di visualizzarne il contenuto, ma senza aprire realmente il file, quando si seleziona un nuovo file, esso prenderà il posto del vecchio nella finestra di preview.
Nella preview è comunque presente un bottone che permette di aprire realmente il file in un suo tab specifico se lo si ritiene necessario.
Figura 5. Un singolo click nel solution navigator apre il file in modalità preview.
(clic per ingrandire)
Vicino ad ogni nome di file e di classe è inoltre presente un piccolo bottone che permette di visualizzarne i dettagli, che sono naturalmente differenti per ogni tipologia di elemento; come esempio in Figura 6 è mostrato il menu contestuale disponibile per una classe: ad esempio si possono visualizzare tutti gli oggetti che lo utilizzano con il comando "Is Used By".
Il risultato della ricerca (in questo caso tutte le classi che utilizzano la classe in questione) viene mostrato direttamente all'interno della finestra del solution navigator e naturalmente selezionando un file, il contenuto verrà aperto nella preview con l'aggiunta di una evidenziazione dei punti in cui è stata usata la classe di partenza.
Ciò che rende questa funzionalità interessante è il fatot che possiamo navigare nel codice semplicemente e visualizzare con pochi click le interazioni tra le classi. Nella figura seguente invece vengono mostrati i bottoni Back e Forward che permettono di navigare tra le visualizzazioni, esattamente come se si fosse in un normale browser.
In questo particolare esempio si può quindi premere "back" e tornare alla lista delle classi e poi premere forward per vedere ancora il risultato del Comando "Is Used By".
In ogni momento si può comunque creare una copia indipendente del solution navigator che può essere posizionata dove si vuole. Questa ultima funzionalità è utilissima per solution con molti progetti, perché permette ad esempio di avere una finestra di Solution Navigator separata per i progetti principali su cui si sta lavorando, riducendo il tempo necessario speso a "rovistare" nell'albero dei progetti per trovare le classi.
Infine è presente il tasto "home" che permette di tornare immediatamente alla visualizzazione originale, azzerando filtri e ricerche eventualmente fatte. Ricordo infine la Shortcut per cercare nel solution Navigator che è CTRL+è
, in questo modo potete cercare file nella solution senza staccare le mani dalla tastiera e la shortcut CTRL+,
(control più virgola) che vi permette di cercare classi e metodi digitando parte del nome.
La finestra di preview inoltre non è utilizzata solamente dal solution navigator, ma viene sfruttata a
Quick access
Osservando la barra dei menu si può notare all'estrema destra una textbox di ricerca chiamata Quick launch o Quick Access, utilissima per cercare ed eseguire un comando senza la necessità di ricordare in che menu o che shortcut ha il comando desiderato.
Per capirne l'utilità facciamo un breve esempio: supponiamo di avere selezionato una porzione di codice e si desideri commentarla; potete premere CTRL+ò
( la shortcut per il Quick Launch), digitare "comment " e Visual Studio troverà per noi tutti i comandi che contengono il testo "comment" nel nome. Come si vede in Figura 8 il suggerimento comprende tutti i comandi disponibili e, dato che quello cercato è il primo mostrato, potete semplicemente premere invio per utilizzarlo, senza staccare le mani dalla tastiera.
Quando si prende familiarità con la quick access, l'utilizzo del mouse può veramente essere ridotto al minimo.
Prendiamo come esempio un task abbastanza comune: "aggiungere una entità al progetto Entities", senza staccare le mani dalla tastiera digitiamo CTRL+è
per cercare nel solution navigator, scriviamo "entities" per trovare il progetto con le entità, ci spostiamo con il cursore sul punto del progetto dove vogliamo aggiungere l'entità. A questo punto con la combinazione CTRL+ò
, ci spostiamo sulla Quick Launch e scriviamo "add class". Aspettiamo una frazione di secondo per vedere i comandi che soddisfano il filtro e premiamo invio, visto che l'unico comando che appare è naturalmente quello per aggiungere una classe al progetto.
Per molti programmatori la possibilità di non essere costretti ad utilizzare il mouse e quindi di non staccare mai le mani dalla tastiera è assai apprezzata, soprattutto per tutte quelle operazioni che vengono eseguite molte volte durante la normale sessione di lavoro.
Anche se l'uso del mouse non rappresenta un problema, la Quick Launch ci sarà comunque utile per cercare i comandi che usiamo raramente e che non ricordiamo mai esattamente dove sono nella miriade di menu di Visual Studio. Ad esempio per esportare lo schema di impostazioni di Visual Studio possiamo semplicemente digitare CTRL+ò
e poi "Export" per vedere subito suggerito il comando senza doverlo cercare nei menu.
Tool di ricerca potenziati
Le funzionalità di ricerca dei productivity power tools hanno riscosso parecchio successo e il Team di Visual Studio si è reso conto che in un ambiente è molto complesso la possibilità di poter "filtrare" e "cercare" risulta utilissimo ovunque, non solo nel Solution Navigator, per questo Dev11 è disseminato di searchbox.
Ad esempio in un progetto in cui abbiamo molti errori o warning e non riusciamo ad usare la finestra "Error list" perché l'elevato numero di messaggi rende impossibile scorrere la griglia per capire realmente cosa non compila, come si vede in figura 9, possiamo digitare testo libero nella finestra filtro (a destra), oppure filtrare gli errori vedendo quelli del solo progetto corrente, del solo documento corrente, o relativi ai soli documenti aperti.
Lavorando con Winform, WPF o Web Formm troviamo una texbox per filtrare anche tra i controlli della toolbox, per trovare subito il controllo desiderato.
Un altro punto dove le funzionalità di ricerca risolvono molti problemi è la nuova finestra di "add reference". Penso che chiunque sia stato frustrato dalla lentezza della finestra standard con cui aggiungere riferimenti ad un progetto e soprattutto dalla difficoltà nel trovare gli assembly scorrendo una lista con centinaia di elementi.
La nuova finestra è stata completamente riscritta, le performance sono molto migliorate ed è stata aggiunta una textbox per cercare tra gli assembly disponibili, assieme ad altre interessanti funzionalità come ad esempio il "recent" che vi mostra le reference più recenti aggiunte ad un progetto (utile quando una stessa reference va aggiunta a più progetti).
Infine le funzionalità di ricerca in un singolo file sono state molto migliorate:
Il vantaggio principale è avere tutti i comandi direttamente nel file, inoltre è possibile effettuare ricerche con regular expression e navigare molto semplicemente tra i match. Cliccando nella combo della ricerca vengono mostrate tutte le opzioni, compresa quella per effettuare una ricerca non nel singolo file, ma in tutti i file della solution.
File compare e ricerca codice duplicato
Chiunque lavori seriamente con Visual Studio sicuramente avrà installato e configurato un prodotto per fare file compare e merge di terze parti, perché quello incluso in VS fino alla versione 2010 è decisamente poco utilizzabile e caotico, per questa ragione in VS11 questa parte è stata completamente riscritta per essere finalmente utilizzabile e produttiva. Se ad esempio richiediamo di confrontare due versioni differenti di un file in TFS si apre il nuovo file compare.
Questa visualizzazione si chiama "inline" e permette di vedere in un unico file entrambe le versioni, con righe evidenziate in colore differente ad indicare il contenuto del file di sinistra e di destra, evidenziando in maniera molto immediata le differenze. Naturalmente è possibile cambiare visualizzazione ed utilizzare una più classica "side by side":
Anche in questo caso il risultato è visivamente molto chiaro ed efficace. Lo stesso identico tool che effettua il confronto di file è in grado di effettuare il Merge, ad esempio in caso di conflitti in Team Foundation Server. In caso di merge naturalmente il tool mostra tre differenti versioni del file, quella del server, quella locale ed il risultato del merge (Figura 14), dove le due frecce evidenziano le checkbox che permettono di selezionare quali parti di testo utilizzare per la versione finale.