Condividi tramite



Novembre 2017

Volume 33 Numero 11

Il presente articolo è stato tradotto automaticamente.

Visual Studio - Modifica e debug di codice in Visual Studio per Mac

Da Alessandro CANC CANC | 2017 novembre

Visual Studio per Mac è l'ambiente di sviluppo nativo le nuove potenti da Microsoft che incorpora perfettamente degli obiettivi mobile-first, prima di cloud della società. Consente di compilare App multipiattaforma con Xamarin e .NET Core e giochi con Unity, utilizzando le proprie competenze .NET esistenti e i linguaggi di programmazione preferiti, ad esempio in c# e F #. È possibile trovare un'introduzione a Visual Studio per Mac in msdn.com/magazine/mt790182. In questo articolo, analizziamo alcune funzionalità potenti nell'editor di codice e gli strumenti di debug che consentono di aumentare la produttività.

Un Editor di codice con tecnologia Roslyn

Visual Studio per Mac consente di scrivere il codice in c# e F # su macOS. Ciò è possibile perché l'IDE sfrutta .NET Compiler Platform, noto anche come progetto "Roslyn" (github.com/dotnet/roslyn). Roslyn fornisce compilatori .NET multipiattaforma che espongono l'analisi del codice avanzata API open source. Come in Visual Studio 2015 e 2017 in Windows, Roslyn consente di creare l'editor di codice in Visual Studio per Mac, fornendo un'esperienza di codifica avanzata con la colorazione della sintassi, IntelliSense, il rilevamento di problema di codice in tempo reale, correzioni e refactoring. Consultare la documentazione ufficiale viene illustrato come utilizzare in generale le correzioni del codice e refactoring (bit.ly/2jKt69D), pertanto in questo articolo verrà esaminata in modo più specifico e le funzionalità, ad esempio la generazione di tipi, la rimozione di ridondanza codice, spostamenti nel codice, l'aggiunta del supporto per lingue personalizzate e i frammenti di codice. Tutte queste funzionalità sono disponibili per i progetti sia Xamarin e .NET Core.

Generazione di tipi in immediata

Tra le funzionalità di produttività nell'editor di codice più interessante è la possibilità di generare nuovi tipi durante la scrittura del codice, senza perdere lo stato attivo nell'editor attivo. Ad esempio, è possibile scrivere il nome di un tipo che non esiste ancora, e quando l'editor di codice evidenzia il nome del tipo come un problema di codice, è possibile pulsante destro del mouse (o premere Alt + Invio), selezionare Quick Fix | Generare il tipo. Figura 1 viene illustrato un esempio basato sulla generazione di un tipo denominato persona.

Generazione di un nuovo tipo, mentre nell'Editor attivo

Figura 1 la generazione di un nuovo tipo, mentre nell'Editor attivo

La prima opzione, genera classe 'Persona' nel nuovo file, genererà una nuova classe denominata Person con il modificatore interno all'interno di un nuovo file denominato Person. La seconda opzione, genera classe 'Person,' genererà una nuova classe denominata Person con il modificatore interno all'interno del file corrente. La terza opzione, genera le classi annidate 'Person,' genererà una nuova classe privata denominata persona annidato all'interno del tipo che è attualmente attivo nell'editor di codice (in questo caso la nuova classe verrebbe generata all'interno della classe Program). È quindi possibile modificare il modificatore interno o privato manualmente o tramite il modificatore di facendo clic e selezionando quindi ancora Quick Fix. In tutti i casi, viene generata la nuova classe con un costruttore vuoto. La quarta opzione, Genera nuovo tipo, Mostra una finestra di dialogo in cui è possibile specificare il tipo che si desidera creare (classe, interfaccia o enumerazione), il modificatore di accesso e la destinazione. E non si è limitato a questo, è possibile utilizzare la stessa tecnica per aggiungere membri al tipo di appena generato. È semplicemente possibile assegnare o richiamare una proprietà, campo o metodo non ancora presenti e sfruttare correzioni rapide per aggiungere facilmente, come illustrato in uno figura 2, cui viene illustrato come aggiungere una nuova proprietà denominata LastName per la classe di persona. La variabile genera 'LastName' opzione fornisce suggerimenti diversi in base al contesto corrente.

Generazione di un nuovo membro

Figura 2, la generazione di un nuovo membro

In questo caso, il codice esegue un'assegnazione, pertanto l'editor di codice suggerisce che si genera una nuova proprietà o campo. In base al codice, l'editor di codice anche assegnerà il tipo appropriato per il membro appena generato, ovvero che genera una proprietà o campo, di tipo stringa. L'editor di codice è possibile analizzare chiamate al metodo e generare le firme del metodo corrispondente. Questa funzionalità è parte del codice il refactoring di strumenti e consente mantenere il codice durante la scrittura.

Rimuovere il codice ridondante

L'editor di codice in Visual Studio per Mac evidenzia anche il codice ridondante: il codice che non è necessario e non utilizzati. Il codice ridondante è facilmente riconoscibile perché sarà disponibile. Dietro le quinte, il codice ridondante è evidenziato in base a alcune regole di analisi di origine che causano il codice ridondante essere considerato un problema. (È possibile controllare queste regole, ma che non rientra nell'ambito di seguito). La maggior parte dei casi sono disponibili esempi di codice ridondante in base a inutili mediante direttive, ma il riconoscimento codice ridondante non è limitato a questo. Ad esempio, un costruttore vuoto e il modificatore internal vengono evidenziati come ridondanti in figura 3.

Rimuovere il codice ridondante

Figura 3 Rimozione codice ridondante

Se si fa clic su codice ridondante è riconosciuto dal colore più chiaro, è quindi possibile selezionare Quick Fix e Visual Studio visualizzerà una correzione del codice che verrà rimosso il codice non necessario. Inoltre, si otterrà un sottomenu, chiamato opzioni che consente di:

  • Eliminare il rilevamento di problema corrente.
  • Configurare ulteriormente la regola di analisi nelle preferenze di Visual Studio.
  • Applicare la correzione del codice per i problemi più dello stesso tipo a livello di documento, progetto o soluzione.

Analogamente, nell'esempio precedente è facilmente correggere ridondanti modificatori interni per le definizioni di tipo (interno è, infatti, il modificatore predefinito in c#). Questa tecnica si applica a qualsiasi regola di analisi che evidenzia il codice ridondante nell'editor.

Esplorazione del codice

Spostamento tra file di codice e tra i membri di un file di codice è molto comune e disporre di strumenti di navigazione potenti, incorporato in modo significativo facilita la produttività. Visual Studio per Mac offre una serie di strumenti affidabili che rendono più semplice per spostarsi tra file, tipi e membri. Prima di tutto, è possibile spostare rapidamente i file di codice premendo Ctrl + Tab. Questa azione Mostra una finestra popup in cui è possibile visualizzare un elenco di file nella soluzione. Cicli di tiene premuto CTRL e premendo il tasto Tab nuovamente l'elenco a discesa e quindi, quando si rilascia, il file selezionato verrà aperta nell'editor. Per lo spostamento di codice sorgente, le sottosezioni Avanti descrivere le funzionalità di produttività meno noti che sono molto utili.

Trova tutti i riferimenti e passare a strumenti

Lo strumento Trova tutti i riferimenti consente di recuperare tutti i riferimenti a un tipo o membro nella soluzione. Per eseguire questo strumento, è sufficiente fare doppio clic su un nome di tipo o membro nell'editor di codice e quindi selezionare Trova tutti i riferimenti. I riferimenti vengono visualizzati nel riquadro risultati della ricerca, come illustrato nella figura 4.

Ricerca di un tipo o i riferimenti ai membri

Figura 4 ricerca di un tipo o i riferimenti ai membri

Nel riquadro risultati della ricerca, è possibile visualizzare (a partire da sinistra a destra) il progetto che contiene il riferimento, il file di codice, tra cui la posizione, il testo di origine contenente l'oggetto di riferimento e il percorso completo del file di origine. È possibile fare doppio clic su un riferimento e l'editor di codice verrà aprire il file di codice appropriato e posizionare il cursore sull'occorrenza selezionata. Si noti come il codice sorgente nella colonna di testo ha la colorazione della sintassi di base. Trova tutti i riferimenti è molto potenti, ma in alcuni casi è consigliabile filtrare la ricerca in base a determinate caratteristiche di tipo e membro. A tale scopo, è possibile utilizzare lo strumento Naviga, che viene richiamata destro del mouse su un tipo o membro e selezionando quindi passare. Verrà visualizzata con un sottomenu che mostra le opzioni di ricerca seguenti:

Trovare i riferimenti di tutti gli overload Trova tutti i riferimenti di un metodo e i relativi overload.

I simboli di base consente di trovare l'elenco di tipi di base e interfacce che il tipo in cui è stato richiamato Naviga eredita da o implementa. Nel caso di metodi, passare troverà l'elenco di metodi che il metodo corrente esegue l'override.

Derivato simboli consente di trovare l'elenco di tipi che ereditano dal tipo in cui è stato richiamato passare. Nel caso di metodi, rileva l'elenco di metodi che sta eseguendo l'override di quella in cui è stato richiamato passare.

Metodi di estensione Trova tutti i metodi di estensione per il tipo in cui è stato richiamato Naviga e che sono definiti nella soluzione corrente.

Gli overload dei membri è simile ai metodi di estensione, ma trova l'elenco degli overload del metodo definito nella soluzione corrente.

Implementazione di membri, se richiamata in una classe astratta o interfaccia, Mostra l'elenco di tipi e membri che implementano che di tipo o l'interfaccia.

Lo strumento di navigazione Mostra i risultati della ricerca nel riquadro risultati della ricerca esattamente come trovare tutti i riferimenti.

La barra di scorrimento e la modalità Mini mappa

Marcatori di colori Visualizza di barra di scorrimento dell'editor di codice che rappresentano problemi di codice, ad esempio gli avvisi e gli errori, i punti di interruzione, attività e un punto a colori nella parte superiore rosso se il file attivo contiene errori, gialli se il file attivo contiene avvisi o verde se non vengono rilevati problemi. Inoltre, la barra di scorrimento fornisce la cosiddetta modalità Mini mappa. Quando questa modalità è abilitata, la barra di scorrimento consente di visualizzare un'anteprima del codice sorgente per semplificare lo spostamento, come illustrato nella figura 5.

La modalità Mini mappa barra di scorrimento

Figura 5, la modalità Mini mappa barra di scorrimento

Abilitare la modalità Mini mappa facendo la barra di scorrimento Mostra mini mappa. È possibile fare clic su un'area sulla mappa e l'editor di codice, il cursore viene spostato al momento appropriato. Per disabilitare la modalità Mini mappa, si fa nuovamente la barra di scorrimento mouse e scegliere Mostra attività. Modalità Mini mappa è particolarmente utile con file lunghi e consente di disporre di una rappresentazione visiva dell'intero file.

Esplorazione di oggetti in un File di codice

Visual Studio per Mac offre visual modi per esplorare con facilità i membri all'interno di un file di codice e tipo. Ogni finestra dell'editor di codice Mostra controlli di navigazione che è possibile fare clic per visualizzare un elenco dei tipi definiti nell'editor attivo. Quando si seleziona un tipo, una scheda aggiuntiva consente di visualizzare l'elenco dei relativi membri. Inoltre, è possibile utilizzare il riquadro Struttura documento per ottenere una rappresentazione visiva della struttura di tipo nel file attivo (vedere figura 6).

Esplorazione di oggetti in un File di codice

Figura 6 esplorazione di oggetti in un File di codice

Si noti come i diversi icone rappresentano i diversi tipi di membri. Si sappia già il riquadro Struttura documento per le funzionalità di visualizzare la gerarchia visiva dell'interfaccia utente, ma è possibile utilizzare anche per ottenere una visualizzazione della struttura di un tipo, che è molto utile. È possibile semplicemente fare doppio clic su un oggetto all'interno di struttura documento e l'editor, il cursore viene spostato alla relativa definizione.

Utilizzo dei frammenti di codice

Visual Studio per Mac supporta frammenti di codice IntelliSense, modelli di blocco di codice scritto pre che possono essere personalizzati per soddisfare le proprie esigenze. Se si ha esperienza con Visual Studio in Windows, si conosce già quali sono i frammenti di codice. In Visual Studio per Mac, sono disponibili due opzioni per inserire un frammento di codice. La prima opzione è facendo clic su editor di codice e quindi selezionando Insert Template. Verrà visualizzato un elenco di frammenti di codice disponibili e si seleziona solo quello che necessario. La seconda opzione preleva un frammento di codice dall'elenco di completamento IntelliSense durante la digitazione. Figura 7 viene illustrato un esempio in un frammento di codice viene evidenziato (si preme Tab due volte per inserire il frammento).

Aggiunta di un frammento di codice

Figura 7 aggiunta di un frammento di codice

Frammenti di codice sono rappresentati con un'icona (...), che li rende immediatamente riconoscibile. In entrambi i casi, una descrizione comando viene scopo del frammento di codice quando si passa il nome con il mouse. Visual Studio per Mac consente inoltre di creare nuovi frammenti di codice personalizzato e modificare quelle esistenti all'interno dell'IDE, senza la necessità di strumenti esterni. A tale scopo, selezionare le preferenze di Visual Studio, menu, quindi nella finestra di dialogo Preferenze individuare e selezionare l'elemento di frammenti di codice in Editor di testo. Sono verrà visualizzato un elenco di frammenti di codice, raggruppati in base alla lingua. Se si seleziona un frammento esistente, è sufficiente premere il pulsante Modifica per modificare il codice. Se è in e fare clic su Aggiungi, si avrà la possibilità di creare un nuovo frammento di codice. Questa operazione viene eseguita nella finestra nuovo modello, in cui viene fornito un tasto di scelta rapida, una descrizione, un tipo MIME, un gruppo di lingue e, naturalmente, il codice sorgente. Figura 8 viene illustrato un esempio.

Creazione di un frammento di codice personalizzato

Figura 8, la creazione di un oggetto personalizzato frammento di codice

Si noti che il simbolo $ viene utilizzato per contrassegnare gli identificatori per la sostituzione, mentre l'espressione di $ end$ $ $selezionata delimita il frammento di codice corrente. Quando si contrassegnano gli identificatori per la sostituzione, è anche possibile fornire informazioni aggiuntive sull'identificatore stesso, ad esempio il valore predefinito e una descrizione comandi che ne descrive il significato, nelle caselle a destra della finestra di dialogo. Al termine, fare clic su OK e chiudere la finestra di dialogo Preferenze. A questo punto, il nuovo frammento di codice è nella libreria di frammento e pronto per essere utilizzato nell'editor di codice tramite IntelliSense. Vale la pena notare che è possibile modificare i frammenti di codice esistente per assegnare un tasto di scelta rapida se non è già disponibile. Ciò consente di digitare il tasto di scelta rapida nell'editor di codice e inserire un frammento di codice più veloce. Se si utilizzano una grande quantità di frammenti di codice come me, con l'opzione per creare dall'interno dell'IDE sarà di risparmiare una notevole quantità di tempo.

Aggiunta di lingue personalizzate

Una delle operazioni che ti convinceranno in Visual Studio per Mac è la possibilità di aggiungere nuove lingue che non sono disponibili, cui grammatica è basata sugli standard di fatto TextMate e Sublime testo. Infatti, Visual Studio per Mac supporta entrambi gli standard e consente di aggiungere il bundle di linguaggio che offre funzionalità di modifica, ad esempio la colorazione della sintassi, frammenti di codice e il completamento delle parole. Ad esempio, si supponga che si desidera aggiungere il supporto di sintassi per la modifica dei file Swift, che può essere molto utili su Mac. In TextMate o testo Sublime, installare un bundle di linguaggio Swift e quindi esportare il pacchetto di bundle di linguaggio su disco. Quindi è possibile importare il bundle di linguaggio in Visual Studio per Mac. A tale scopo, è utilizzare il nodo bundle Language della finestra di dialogo Preferenze. Di seguito sarà possibile fare clic su Aggiungi e selezionare il language pack esportati prima. A questo punto, sarà possibile aprire i file .swift (o altri tipi di file in base il pacchetto che è stato importato) e di sfruttare funzionalità quali la colorazione della sintassi e la riduzione di blocchi di codice.

L'editor di codice consente inoltre di inserire i frammenti di codice se il pacchetto di linguaggio selezionato contiene uno. Ovviamente, Visual Studio per Mac non supporta la compilazione i file di origine o la creazione e la pubblicazione di applicazioni in base ai pacchetti linguaggio esterno. È possibile eseguire è invece di automatizzare l'esecuzione di strumenti esterni, ad esempio i compilatori, con il comando di modifica di strumenti personalizzati nel menu di opzioni.

Produttività del debug e riempie la classe Debug

Il debug è estremamente importante e Visual Studio per Mac viene fornito con il tipo di prima classe strumenti di debug, che ogni sviluppatore deve creare applicazioni di alta qualità in modo produttivo. Consultare la documentazione ufficiale (bit.ly/2xgJkx0) vengono descritti gli strumenti più diffusi, ad esempio i punti di interruzione, i visualizzatori di dati e il controllo di flusso condizionale. Eseguo descritte alcune altre funzionalità nice che si potrebbe voler conoscere, soprattutto se si ha familiarità con il debug in Visual Studio in Windows e si prevede che visualizzare gli stessi strumenti sul Mac. Iniziamo con la classe Debug, che consente di stampare la valutazione di un'espressione per il riquadro di Output dell'applicazione dal codice c#, senza interrompere l'esecuzione di un'applicazione. Si supponga di che avere un'applicazione console .NET Core che attende l'input dell'utente con il codice seguente:

string inputString = Console.ReadLine();
Debug.WriteLine($"The entered string is {inputString.Length} characters long");

Il metodo debug. WriteLine viene stampata l'espressione per il riquadro di Output dell'applicazione, come illustrato nella figura 9, senza interrompere l'esecuzione dell'applicazione. In questo caso, l'espressione è una stringa interpolata che contiene la lunghezza della stringa immessa dall'utente.

Il risultato di una versione di valutazione stampato il riquadro di Output dell'applicazione

Figura 9 stampato il risultato di una versione di valutazione per l'applicazione di Output riempimento

E non si è limitato al metodo WriteLine. in effetti, è possibile utilizzare tutti gli altri metodi supportati, ad esempio Assert, Equals, hanno esito negativo, scrittura, WriteIf e WriteLineIf (vedere bit.ly/2ydS8jO per informazioni dettagliate).

In Visual Studio per Mac, vi sono altri modi per valutare le espressioni e per controllare i valori dell'oggetto durante il debug. È possibile utilizzare i punti di interruzione e i visualizzatori di dati, ma è anche possibile utilizzare il riquadro espressioni di controllo, il cui scopo è fornire un modo per monitorare le variabili, metodi e le espressioni. In modalità di interruzione, finestra Espressioni di controllo è abilitata automaticamente ed è possibile fare clic all'interno per aggiungere un nuovo oggetto da monitorare. Figura 10 viene illustrato un esempio in base a un valore della proprietà.

Oggetti di monitoraggio con il riquadro espressioni di controllo

Figura 10 oggetti con il riquadro espressioni di controllo di monitoraggio

Per ogni oggetto che monitoraggio, è possibile visualizzare i relativi membri e i relativi valori. È anche possibile fare clic sul valore e modificarla, in modo da visualizzare il comportamento del codice con un valore di un oggetto diverso. Il riquadro espressioni di controllo fornisce ancora i tasti di scelta rapida per i visualizzatori di dati, che è possibile riconoscere tramite le icone occhio e matita. Sono inoltre disponibili altri due Pad debug molto utili: il riquadro di thread e lo Stack di chiamate di riempimento, entrambi visibili nel figura 11.

Thread di monitoraggio e chiamate al metodo con Pad dello Stack di chiamate e i thread

Figura 11 thread e chiamate al metodo con Pad dello Stack di chiamate e i thread di monitoraggio

Il riquadro thread mostra l'elenco di thread in esecuzione e risulta utile per comprendere i percorsi di codice in cui sono in pausa diversi thread dell'applicazione. Mostra l'ID del thread, il nome e il percorso del codice che fa riferimento a ogni thread. È anche possibile immettere un nome per i thread se non esiste già. Il riquadro di Stack di chiamate Mostra la gerarchia delle chiamate di metodo ed è possibile abilitarlo visualizzare anche le chiamate al codice che non è presente nella soluzione; ad esempio, i frame di interoperabilità. A tale scopo, il riquadro destro e abilitare l'opzione Mostra codice esterno. Sfruttando tutti questi elementi, è una suite di potente e completezza di strumenti di debug che, insieme a punti di interruzione, il riquadro variabili locali e il Visualizzatore di dati, controllo completo sulla soluzioni .NET Core e Xamarin.

Conclusioni

Visual Studio per Mac non solo consente di compilare applicazioni multipiattaforma per dispositivi mobili e il cloud con Xamarin e .NET Core su macOS, offre anche tutti gli strumenti di produttività che è necessario scrivere codice di alta qualità. Ciò include le funzionalità di produttività nell'editor di codice e negli strumenti di debug che si ritiene a casa con l'IDE, soprattutto se si ha esperienza con Visual Studio in Windows.


Alessandro Del Sole* è stato MVP di Microsoft a partire da 2008. Affidato MVP di cinque volte l'anno, Davide è l'autore di molti libri, eBook, video dimostrativi e articoli sullo sviluppo per .NET con Visual Studio. CANC unico funziona come un senior sviluppatori di .NET, porre l'attenzione su .NET e lo sviluppo di app per dispositivi mobili, di consulenza e formazione. Ha recentemente è l'autore di un libro imminente chiamato "Inizio Visual Studio per Mac" (bit.ly/2hsRxYx). È possibile seguire quest'ultimo su Twitter: @progalex.*

Grazie per il seguente esperto tecnico di Microsoft per la revisione dell'articolo: Mikayla Hutchinson


Viene illustrato in questo articolo nel forum di MSDN Magazine