Sviluppare con F# in Visual Studio

Questo articolo offre informazioni sulle funzionalità di Visual Studio per lo sviluppo in F#.

Installare il supporto per F#

Per sviluppare con F# in Visual Studio, installare prima di tutto il carico di lavoro Sviluppo per desktop .NET, se non lo si è già fatto. Per installare carichi di lavoro di Visual Studio si usa il programma di installazione di Visual Studio, che è possibile aprire selezionando Strumenti>Ottieni strumenti e funzionalità.

.NET desktop development workload in Visual Studio

Funzionalità per progetti F#

In Visual Studio sono disponibili vari modelli di progetto e di elemento. L'immagine seguente illustra alcuni modelli di progetto F# per .NET Core e .NET Standard:

F# project templates in Visual Studio

L'immagine seguente illustra alcuni modelli di elemento F#:

F# item templates in Visual Studio

Per altre informazioni sui modelli di elemento per l'accesso ai dati, vedere Provider di tipi F#.

La tabella seguente riepiloga le funzionalità delle proprietà del progetto per F#:

Impostazione progetto Supporto in F# Note
File di risorse
Impostazioni di compilazione, debug e riferimento
Multitargeting
Icona e manifesto No Disponibili attraverso le opzioni della riga di comando del compilatore.
Servizi client ASP.NET No
ClickOnce No Usare un progetto client in un altro linguaggio .NET, se applicabile.
Denominazione sicura No Disponibili attraverso le opzioni della riga di comando del compilatore.
Pubblicazione e controllo delle versioni degli assembly No
Analisi codice No Gli strumenti di analisi codice possono essere eseguiti manualmente o nell'ambito di un comando post-compilazione.
Sicurezza (modifica dei livelli di attendibilità) No

Progettazione progetti

Creazione progetti è costituito da diverse pagine delle proprietà di progetto raggruppate per funzionalità correlate. Le pagine disponibili per i progetti F#, per la maggior parte un subset dei progetti disponibili per altri linguaggi, sono descritte nella tabella seguente. Sono presenti collegamenti alla pagina Creazione progetti C# corrispondente.

Pagina Creazione progetti Collegamenti correlati Descrizione
Applicazione Pagina Applicazione, Creazione progetti Consente di specificare le impostazioni e le proprietà a livello di applicazione, ad esempio se si sta creando una libreria o un file eseguibile, nonché la versione di .NET a cui è destinata l'applicazione e informazioni sulla posizione di archiviazione dei file di risorse usati dall'applicazione stessa.
Compilazione Pagina Compilazione, Progettazione progetti Consente di controllare la modalità di compilazione del codice.
Eventi di compilazione Pagina Eventi di compilazione, Creazione progetti Consente di specificare i comandi da eseguire prima o dopo una compilazione.
Debug Pagina Debug, Creazione progetti Consente di controllare la modalità di esecuzione dell'applicazione durante il debug, ad esempio i comandi da usare e la directory iniziale dell'applicazione, ed eventuali modalità di debug speciali da abilitare, ad esempio codice nativo e SQL.
Pacchetto (solo .NET SDK) N/D Consente di definire i metadati del pacchetto NuGet durante la pubblicazione come pacchetto NuGet.
Percorsi riferimento Gestire i riferimenti in un progetto Consente di specificare la posizione in cui cercare gli assembly da cui dipende il codice.
Risorse (solo .NET SDK) N/D Consente di generare e gestire un file di risorse predefinito.

Impostazioni specifiche di F#

La tabella seguente riepiloga le impostazioni specifiche di F#:

Pagina Creazione progetti Impostazione Descrizione
Compilazione Genera chiamate tail Se selezionata, abilita l'uso delle istruzioni tail MSIL (Microsoft Intermediate Language). In questo modo lo stack frame viene riutilizzato per le funzioni tail ricorsive. Equivalente all'opzione del compilatore --tailcalls.
Compilazione Altri flag Consente di specificare opzioni da riga di comando del compilatore aggiuntive.

Funzionalità degli editor di codice e di testo

F# supporta le funzionalità seguenti degli editor di codice e di testo di Visual Studio:

Funzionalità Descrizione Supporto in F#
Commento automatico Consente di impostare o rimuovere commenti da sezioni di codice.
Formattazione automatica Riformatta il codice con rientri e stile standard. No
Bookmarks Consente di salvare posizioni specifiche nell'editor.
Modifica del rientro Consente di impostare o annullare un rientro per le righe selezionate.
Rientro automatico Applica e annulla il rientro del cursore in base alle regole di ambito F#.
Ricerca e sostituzione di testo Consente di eseguire la ricerca in un file, in un progetto o in una soluzione, con la possibilità di modificare il testo.
Vai a definizione per l'API .NET Quando il cursore è posizionato su un'API .NET, visualizza il codice generato dai metadati di .NET. No
Passaggio alla definizione per un'API definita dall'utente Quando il cursore è posizionato su un'entità di programma definita dall'utente, sposta il cursore nella posizione all'interno del codice in cui l'entità è definita.
Vai alla riga Consente di passare a una riga specifica in un file, in base al numero di riga.
Barre di spostamento nella parte superiore del file Consente di passare a posizioni specifiche all'interno del codice, ad esempio a un nome di funzione.
Linee guida per strutture a blocchi Mostra linee guida che indicano ambiti F# che visualizzano un'anteprima se si sposta il puntatore del mouse su di essi.
Struttura Consente di comprimere le sezioni del codice per creare una visualizzazione più compatta.
Inserimento di tabulazioni Converte gli spazi in tabulazioni.
Colorazione dei tipi Visualizza i nomi dei tipi definiti con un colore particolare.
Ricerca veloce. Vedere Ricerca veloce, finestra Trova e sostituisci. Consente di eseguire ricerche all'interno di un file o di un progetto.
Ctrl+clic per passare a una definizione Consente di richiamare Vai a definizione tenendo premuto Ctrl e facendo clic su un simbolo F#.
Vai a definizione da Informazioni rapide Simboli selezionabili all'interno delle descrizioni comando che richiamano Vai a definizione.
Vai a tutti Consente lo spostamento per corrispondenze fuzzy globale per tutti i costrutti F# tramite Ctrl+T.
Ridenominazione inline Consente di rinominare tutte le occorrenze di un simbolo inline.
Trova tutti i riferimenti Trova tutte le occorrenze di un simbolo in una codebase.
Correzione del codice Semplifica nome Rimuove i qualificatori non necessari per i simboli F#.
Correzione del codice Rimuovi istruzioni open non usate Rimuove tutte le istruzioni open non necessarie presenti in un documento.
Correzione del codice valore non usato Suggerisce di rinominare un identificatore non usato in un carattere di sottolineatura.

Per informazioni generali sulla modifica di codice in Visual Studio e sulle funzionalità dell'editor di testo, vedere Scrivere codice nell'editor.

IntelliSense, funzionalità

La tabella seguente riepiloga le funzionalità di IntelliSense supportate e non supportate in F#:

Funzionalità Descrizione Supporto in F#
Implementazione automatica di interfacce Genera stub di codice per metodi di interfaccia.
Frammenti di codice Inserisce codice da una libreria di costrutti di codifica comuni in argomenti. No
Completa parola Salva il testo digitato completando le parole e i nomi durante la digitazione.
Completamento automatico Se abilitata, questa funzionalità fa in modo che il completamento delle parole selezioni la prima corrispondenza durante la digitazione, anziché attendere la selezione di una parola o la pressione di Ctrl+Spazio da parte dell'utente.
Offerta di completamento dei simboli all'interno di spazi dei nomi non aperti Con il completamento automatico, viene suggerito un simbolo corrispondente presente in uno spazio dei nomi non aperto, consentendo il completamento con l'istruzione open corrispondente, se selezionato.
Generazione di elementi di codice Consente di generare codice di stub per un'ampia gamma di costrutti. No
Elencare i membri Quando si digita l'operatore di accesso ai membri (.), visualizza i membri di un tipo.
Organizzazione di using/open Organizza gli spazi dei nomi a cui fanno riferimento istruzioni using in C# o direttive open in F#. No
Informazioni sui parametri Visualizza informazioni utili sui parametri durante la digitazione di una chiamata di funzione.
Informazioni rapide Visualizza la dichiarazione completa per ogni identificatore incluso nel codice.
Completamento parentesi graffa automatico Completa automaticamente i costrutti di sintassi con parentesi graffe di F# in modo transazionale.

Per informazioni generali su IntelliSense, vedere Usare IntelliSense.

Funzionalità di debug

La tabella seguente riepiloga le funzionalità disponibili quando si esegue il debug di codice F#:

Funzionalità Descrizione Supporto in F#
Auto (finestra) Visualizza le variabili automatiche o temporanee. No
Punti di interruzione Consente di sospendere l'esecuzione del codice in corrispondenza di punti specifici durante il debug.
Punti di interruzione condizionali Consente l'uso di punti di interruzione che eseguono il test di una condizione che determina se l'esecuzione deve essere sospesa.
Modifica e continuazione Consente la modifica e la compilazione del codice durante il debug di un programma in esecuzione senza interrompere e riavviare il debugger. No
Analizzatore di espressioni Valuta ed esegue codice in fase di runtime. No, ma è possibile usare l'analizzatore di espressioni C#, anche se è necessario usare la sintassi C#.
Debug cronologico Consente di eseguire un'istruzione di codice eseguito in precedenza.
Finestra Variabili locali Visualizza valori e variabili definiti localmente.
Esegui fino al cursore Consente di eseguire il codice fino al raggiungimento della riga che contiene il cursore.
Esegui istruzione Consente di anticipare l'esecuzione passando a una qualsiasi chiamata di funzione.
Esegui istruzione/routine Consente di anticipare l'esecuzione nello stack frame corrente superando qualsiasi chiamata di funzione.

Per informazioni generali sul debugger di Visual Studio, vedere Debug in Visual Studio.

Strumenti aggiuntivi

La tabella seguente riepiloga il supporto per F# di Strumenti di Visual Studio.

Strumento Descrizione Supporto in F#
Gerarchia delle chiamate Visualizza la struttura annidata delle chiamate di funzione nel codice. No
Metrica del codice Raccoglie informazioni sul codice, ad esempio il numero di righe. No
Visualizzazione classi Rende disponibile una visualizzazione del codice di un progetto basata sui tipi. No
Finestra Elenco errori Visualizza l'elenco degli errori nel codice.
F# Interactive Consente di digitare (o copiare e incollare) codice F# ed eseguirlo immediatamente, indipendentemente dalla compilazione del progetto. La finestra F# Interactive è una finestra REPL (Read-Eval-Print).
Visualizzatore oggetti Consente di visualizzare i tipi presenti in un assembly. I tipi F# visualizzati negli assembly compilati non appaiono esattamente come vengono creati. È possibile esplorare la rappresentazione compilata dei tipi F#, ma non è possibile visualizzare i tipi così come appaiono da F#.
Finestra Output Visualizza l'output della compilazione.
Analisi di prestazioni Rende disponibili strumenti per la misurazione delle prestazioni del codice.
Finestra Proprietà Visualizza le proprietà dell'oggetto con stato attivo nell'ambiente di sviluppo e consente la modifica di tali proprietà.
Esplora server Offre alcuni metodi per l'interazione con un'ampia gamma di risorse del server.
Esplora soluzioni Consente di visualizzare e gestire progetti e file.
Elenco attività Consente di gestire gli elementi di lavoro relativi al codice. No
Progetti di test Offre funzionalità per l'esecuzione del test del codice. No
Casella degli strumenti Visualizza schede che contengono oggetti trascinabili quali controlli e sezioni di testo o codice.

Vedi anche