Opzioni del compilatore

Questo articolo descrive le opzioni della riga di comando del compilatore per il compilatore F#. Il comando dotnet build richiama il compilatore F# nei file di progetto F#. I file di progetto F# sono indicati con l'estensione .fsproj .

L'ambiente di compilazione può anche essere controllato impostando le proprietà del progetto. Per i progetti destinati a .NET Core, la proprietà <OtherFlags>...</OtherFlags> "Altri flag", in .fsproj, viene usata per specificare opzioni aggiuntive della riga di comando.

Opzioni del compilatore elencate in ordine alfabetico

La tabella seguente mostra le opzioni del compilatore elencate in ordine alfabetico. Alcune delle opzioni del compilatore F# sono simili alle opzioni del compilatore C#. In tal caso, viene fornito un collegamento all'argomento opzioni del compilatore C#.

Opzione del compilatore Descrizione
--allsigs Genera un nuovo file di firma (o rigenera un file di firma esistente) per ogni file di origine nella compilazione. Per altre informazioni sui file di firma, vedere Firme.
-a filename.fs Genera una libreria dal file specificato. Questa opzione è una forma breve di --target:library filename.fs.
--baseaddress:address Specifica l'indirizzo di base preferenziale in cui caricare una DLL.

Questa opzione del compilatore equivale all'opzione del compilatore C# con lo stesso nome. Per altre informazioni, vedere /baseaddress (Opzioni del compilatore C#).
--codepage:id Specifica la tabella codici da usare durante la compilazione se la pagina richiesta non è la tabella codici predefinita corrente per il sistema.

Questa opzione del compilatore equivale all'opzione del compilatore C# con lo stesso nome. Per altre informazioni, vedere /code pages (opzioni del compilatore C#).
--consolecolors Specifica che gli errori e gli avvisi usano testo codificato a colori nella console.
--crossoptimize[+ or -] Abilita o disabilita le ottimizzazioni tra moduli.
--delaysign[+|-] Ritarda la firma dell'assembly usando solo la parte pubblica della chiave con nome sicuro.

Questa opzione del compilatore equivale all'opzione del compilatore C# con lo stesso nome. Per altre informazioni, vedere /delaysign (Opzioni del compilatore C#).
--checked[+|-] Abilita o disabilita la generazione di controlli di overflow.

Questa opzione del compilatore equivale all'opzione del compilatore C# con lo stesso nome. Per altre informazioni, vedere /checked (Opzioni del compilatore C#).
--debug[+|-]

-g[+|-]

--debug:[full|pdbonly]

-g: [full|pdbonly]
Abilita o disabilita la generazione di informazioni di debug oppure specifica il tipo di informazioni di debug da generare. Il valore predefinito è full, che consente il collegamento a un programma in esecuzione. Scegliere pdbonly di ottenere informazioni di debug limitate archiviate in un file pdb (database di programma).

Equivale all'opzione del compilatore C# con lo stesso nome. Per ulteriori informazioni, vedere,

/debug (opzioni del compilatore C#).
--define:symbol

-d:symbol
Definisce un simbolo da utilizzare nella compilazione condizionale.
--deterministic[+|-] Produce un assembly deterministico ,incluso il GUID della versione del modulo e il timestamp. Questa opzione non può essere usata con numeri di versione con caratteri jolly e supporta solo i tipi di debug incorporati e portabili
--doc:xmldoc-filename Indica al compilatore di generare commenti della documentazione XML nel file specificato. Per altre informazioni, vedere XML Documentation.

Questa opzione del compilatore equivale all'opzione del compilatore C# con lo stesso nome. Per altre informazioni, vedere /doc (Opzioni del compilatore C#).
--fullpaths Indica al compilatore di generare percorsi completi.

Questa opzione del compilatore equivale all'opzione del compilatore C# con lo stesso nome. Per altre informazioni, vedere /fullpaths (Opzioni del compilatore C#).
--help

-?
Visualizza le informazioni sull'utilizzo, inclusa una breve descrizione di tutte le opzioni del compilatore.
--highentropyva[+|-] Abilitare o disabilitare la randomizzazione casuale dello spazio degli indirizzi ad alta entropia (ASLR), una funzionalità di sicurezza avanzata. Il sistema operativo randomizza le posizioni in memoria in cui vengono caricati l'infrastruttura per le applicazioni, ad esempio lo stack e l'heap. Se si abilita questa opzione, i sistemi operativi possono usare questa randomizzazione per usare lo spazio di indirizzi a 64 bit completo in un computer a 64 bit.
--keycontainer:key-container-name Specifica un contenitore di chiavi con nome sicuro.
--keyfile:filename Specifica il nome di un file di chiave pubblica per la firma dell'assembly generato.
--lib:folder-name

-I:folder-name
Specifica una directory in cui cercare gli assembly a cui viene fatto riferimento.

Questa opzione del compilatore equivale all'opzione del compilatore C# con lo stesso nome. Per altre informazioni, vedere /lib (Opzioni del compilatore C#).
--linkresource:resource-info Collega una risorsa specificata all'assembly. Il formato delle informazioni sulle risorse è filename[name[public|private]]

Il collegamento di una singola risorsa con questa opzione è un'alternativa all'incorporamento di un intero file di risorse con l'opzione --resource .

Questa opzione del compilatore equivale all'opzione del compilatore C# con lo stesso nome. Per altre informazioni, vedere /linkresource (Opzioni del compilatore C#).
--mlcompatibility Ignora gli avvisi visualizzati quando si usano funzionalità progettate per la compatibilità con altre versioni di ML.
--noframework Disabilita il riferimento predefinito all'assembly .NET Framework.
--nointerfacedata Indica al compilatore di omettere la risorsa che in genere aggiunge a un assembly che include metadati specifici di F#.
--nologo Non visualizza il testo del banner quando si avvia il compilatore.
--nooptimizationdata Indica al compilatore di includere solo l'ottimizzazione essenziale per l'implementazione di costrutti inlined. Impedisce l'inlining tra moduli, ma migliora la compatibilità binaria.
--nowin32manifest Indica al compilatore di omettere il manifesto Win32 predefinito.
--nowarn:warning-number-list Disabilita gli avvisi specifici elencati in base al numero. Separare ogni numero di avviso in base a una virgola. È possibile individuare il numero di avviso per qualsiasi avviso dell'output di compilazione.

Questa opzione del compilatore equivale all'opzione del compilatore C# con lo stesso nome. Per altre informazioni, vedere /nowarn (Opzioni del compilatore C#).
--optimize[+|-] [optimization-option-list]

-O[+|-] [optimization-option-list]
Abilita o disabilita le ottimizzazioni. Alcune opzioni di ottimizzazione possono essere disabilitate o abilitate in modo selettivo elencandole. Si tratta di: nojitoptimize, nolocaloptimizenojittracking, , nocrossoptimize, . notailcalls
--out:output-filename

-o:output-filename
Specifica il nome dell'assembly o del modulo compilato.

Questa opzione del compilatore equivale all'opzione del compilatore C# con lo stesso nome. Per altre informazioni, vedere /out (Opzioni del compilatore C#).
--pathmap:path=sourcePath,... Specifica come eseguire il mapping di percorsi fisici ai nomi di percorso di origine restituiti dal compilatore.

Questa opzione del compilatore equivale all'opzione del compilatore C# con lo stesso nome. Per altre informazioni, vedere /pathmap (opzioni del compilatore C#).
--pdb:pdb-filename Assegna un nome al file PDB di debug di output (database di programma). Questa opzione si applica solo quando --debug è abilitata anche.

Questa opzione del compilatore equivale all'opzione del compilatore C# con lo stesso nome. Per altre informazioni, vedere /pdb (opzioni del compilatore C#).
--platform:platform-name Specifica che il codice generato verrà eseguito solo nella piattaforma specificata (x86, Itaniumo x64) oppure, se si seleziona il nome anycpu della piattaforma, specifica che il codice generato può essere eseguito in qualsiasi piattaforma.

Questa opzione del compilatore equivale all'opzione del compilatore C# con lo stesso nome. Per altre informazioni, vedere /platform (Opzioni del compilatore C#).
--preferreduilang:lang Specifica il nome delle impostazioni cultura della lingua di output preferito, es-ESad esempio , ja-JP.
--quotations-debug Specifica che devono essere generate informazioni di debug aggiuntive per le espressioni derivate dai valori letterali delle virgolette F# e dalle definizioni riflesse. Le informazioni di debug verranno aggiunte agli attributi personalizzati di un nodo dell'albero delle espressioni F#. Vedere Virgolette di codice ed Expr.CustomAttributes.
--reference:assembly-filename

-r:assembly-filename
Rende disponibile il codice da un assembly F# o .NET Framework per il codice da compilare.

Questa opzione del compilatore equivale all'opzione del compilatore C# con lo stesso nome. Per altre informazioni, vedere /reference (Opzioni del compilatore C#).
--resource:resource-filename Incorpora un file di risorse gestite nell'assembly generato.

Questa opzione del compilatore equivale all'opzione del compilatore C# con lo stesso nome. Per altre informazioni, vedere /resource (Opzioni del compilatore C#).
--sig:signature-filename Genera un file di firma basato sull'assembly generato. Per altre informazioni sui file di firma, vedere Firme.
--simpleresolution Specifica che i riferimenti agli assembly devono essere risolti usando regole Mono basate su directory anziché la risoluzione MSBuild. L'impostazione predefinita consiste nell'usare la risoluzione MSBuild, ad eccezione dell'esecuzione in Mono.
--standalone Specifica di produrre un assembly contenente tutte le relative dipendenze in modo che venga eseguito da solo senza la necessità di assembly aggiuntivi, ad esempio la libreria F#.
--staticlink:assembly-name Collega in modo statico l'assembly specificato e tutte le DLL a cui si fa riferimento che dipendono da questo assembly. Usare il nome dell'assembly, non il nome della DLL.
--subsystemversion Specifica la versione del sottosistema del sistema operativo da usare per l'eseguibile generato. Usare la versione 6.02 per Windows 8.1, 6.01 per Windows 7, 6.00 per Windows Vista. Questa opzione si applica solo ai file eseguibili, non alle DLL e deve essere usata solo se l'applicazione dipende da funzionalità di sicurezza specifiche disponibili solo in determinate versioni del sistema operativo. Se questa opzione viene usata e un utente tenta di eseguire l'applicazione in una versione precedente del sistema operativo, avrà esito negativo con un messaggio di errore.
--tailcalls[+|-] Abilita o disabilita l'uso dell'istruzione tail IL, che fa sì che lo stack frame venga riutilizzato per le funzioni ricorsive della coda. Per impostazione predefinita, questa opzione è attivata.
--target:[exe|winexe|library|module] filename Specifica il tipo e il nome file del codice compilato generato.
  • exe indica un'applicazione console.
  • winexe significa un'applicazione Windows, che differisce dall'applicazione console in quanto non dispone di flussi di input/output standard (stdin, stdout e stderr) definiti.
  • library è un assembly senza un punto di ingresso.
  • module è un modulo .NET Framework (.netmodule), che in un secondo momento può essere combinato con altri moduli in un assembly.
--times Visualizza le informazioni sulla tempistica per la compilazione.
--utf8output Abilita l'output del compilatore di stampa nella codifica UTF-8.
--warn:warning-level Imposta un livello di avviso (da 0 a 5). Il livello predefinito è 3. A ogni avviso viene assegnato un livello in base alla relativa gravità. Il livello 5 offre più avvisi, ma meno gravi rispetto al livello 1.

Questa opzione del compilatore equivale all'opzione del compilatore C# con lo stesso nome. Per altre informazioni, vedere /warn (Opzioni del compilatore C#).
--warnon:warning-number-list Abilitare avvisi specifici che potrebbero essere disattivati per impostazione predefinita o disabilitati da un'altra opzione della riga di comando. L'elenco è delimitato da virgole.
--warnaserror[+|-] [warning-number-list] Abilita o disabilita l'opzione per segnalare gli avvisi come errori. È possibile specificare numeri di avviso specifici da disabilitare o abilitare. Le opzioni più avanti nella riga di comando sostituiscono le opzioni in precedenza nella riga di comando. Ad esempio, per specificare gli avvisi che non si desidera segnalare come errori, specificare --warnaserror+--warnaserror-:warning-number-list.

Questa opzione del compilatore equivale all'opzione del compilatore C# con lo stesso nome. Per altre informazioni, vedere /warnaserror (Opzioni del compilatore C#).
--win32manifest:manifest-filename Aggiunge un file manifesto Win32 alla compilazione. Questa opzione del compilatore equivale all'opzione del compilatore C# con lo stesso nome. Per altre informazioni, vedere /win32manifest (opzioni del compilatore C#).
--win32res:resource-filename Aggiunge un file di risorse Win32 alla compilazione.

Questa opzione del compilatore equivale all'opzione del compilatore C# con lo stesso nome. Per altre informazioni, vedere /win32res ((C#) Compiler Options).

Avvisi di consenso esplicito

Il compilatore F# supporta diversi avvisi di consenso esplicito:

Numero Riepilogo Livello Descrizione
21 Ricorsione verificata in fase di esecuzione 5 Avvisa quando viene controllato un utilizzo ricorsivo per l'inizializzazione del suono in fase di esecuzione.
22 Binding eseguiti non in ordine 5 Avvisa quando un'associazione ricorsiva può essere eseguita in ordine non ordinato a causa di un riferimento in avanti.
52 Copie implicite di struct 5 Avvisa quando viene copiato uno struct non modificabile per assicurarsi che l'originale non venga modificato da un'operazione.
1178 Uguaglianza/confronto implicito 5 Avvisa quando una dichiarazione di tipo F# viene dedotta in modo implicito come NoEquality o NoComparison ma l'attributo non è presente nel tipo.
1182 Variabili inutilizzate n/d Avvisare per le variabili inutilizzate.
3180 Allocazioni di heap implicite n/d Avvisa quando un locale modificabile viene allocato in modo implicito come cella di riferimento perché è stato acquisito da una chiusura.
3366 Notazione dell'indice n/d Avvisa quando viene usata la notazione expr.[idx] dell'indice F# 5.
3517 Errore InlineIfLambda n/d Avvisa quando l'utilità di ottimizzazione F# non riesce a inline un InlineIfLambda valore, ad esempio se è stato specificato un valore di funzione calcolata anziché un'espressione lambda esplicita.
3387 op_Implicit Conversione n/d Avvisa quando viene usata una conversione implicita .NET in corrispondenza di un argomento del metodo.
3388 Upcast implicito aggiuntivo n/d Avvisa quando viene usato in modo implicito un upcast aggiuntivo, aggiunto in F# 6.
3389 Ampliamento implicito n/d Avvisa quando viene usata un'estensione numerica implicita.
3390 Commenti della documentazione XML in formato non valido n/d Avvisa quando i commenti della documentazione XML sono in formato non valido in vari modi.

È possibile abilitare questi avvisi usando /warnon:NNNN o <WarnOn>NNNN</WarnOn> dove NNNN è il numero di avviso pertinente. È anche possibile usare la sintassi <WarnOn>FSNNNN</WarnOn>, ad esempio <WarnOn>FS3388</WarnOn>. Si noti che se la WarnOn proprietà viene specificata più volte, viene utilizzata solo l'ultima occorrenza. Per specificare più avvisi, specificare la WarnOn proprietà una sola volta con una stringa delimitata da virgole come contenuto: <WarnOn>3388,3559</WarnOn>.

Posizione Descrizione
Opzioni di F# Interactive Vengono descritte le opzioni della riga di comando supportate dall'interprete F# fsi.exe.
Riferimenti alle proprietà di progetto Descrive l'interfaccia utente per i progetti, incluse le pagine delle proprietà del progetto che forniscono opzioni di compilazione.