Opciones del compilador

En este artículo se describen las opciones de línea de comandos del compilador de F#. El comando dotnet build invoca al compilador de F# en archivos de proyecto de F#. Los archivos de proyecto de F# se reconocen por la extensión .fsproj.

El entorno de compilación también se puede controlar mediante el establecimiento de las propiedades del proyecto. En el caso de los proyectos destinados a .NET Core, se usa la propiedad "Other flags", <OtherFlags>...</OtherFlags> en .fsproj, para especificar opciones de línea de comandos adicionales.

Opciones del compilador por orden alfabético

En la tabla siguiente se muestran las opciones del compilador ordenadas alfabéticamente. Algunas de las opciones del compilador de F# son similares a las del compilador de C#. Si es así, se proporciona un vínculo al tema de opciones del compilador de C#.

Opción del compilador Descripción
--allsigs Genera un nuevo archivo de firma (o regenera uno existente) para cada archivo de origen de la compilación. Para obtener más información sobre los archivos de firma, vea Firmas.
-a filename.fs Genera una biblioteca a partir del archivo especificado. Esta opción es una forma abreviada de --target:library filename.fs.
--baseaddress:address Especifica la dirección base preferida para cargar una DLL.

Esta opción del compilador es equivalente a la opción del compilador de C# del mismo nombre. Para obtener más información, consulte /baseaddress (Opciones del compilador de C#).
--codepage:id Especifica qué página de códigos se va a usar durante la compilación si la página necesaria no es la página de códigos predeterminada actual del sistema.

Esta opción del compilador es equivalente a la opción del compilador de C# del mismo nombre. Para obtener más información, vea /code pages (Opciones del compilador de C#).
--consolecolors Especifica que los errores y las advertencias usan texto codificado en color en la consola.
--crossoptimize[+ or -] Habilita o deshabilita optimizaciones entre módulos.
--delaysign[+|-] Retrasa la firma del ensamblado con solo la parte pública de la clave de nombre seguro.

Esta opción del compilador es equivalente a la opción del compilador de C# del mismo nombre. Para obtener más información, consulte /delaysign (Opciones del compilador de C#).
--checked[+|-] Habilita o deshabilita la generación de comprobaciones de desbordamiento.

Esta opción del compilador es equivalente a la opción del compilador de C# del mismo nombre. Para obtener más información, consulte /checked (Opciones del compilador de C#).
--debug[+|-]

-g[+|-]

--debug:[full|pdbonly]

-g: [full|pdbonly]
Habilita o deshabilita la generación de información de depuración, o especifica el tipo de información de depuración que se va a generar. El valor predeterminado es full, que permite asociar a un programa en ejecución. Elija pdbonly para obtener información de depuración limitada almacenada en un archivo pdb (base de datos de programa).

Equivalente a la opción del compilador de C# del mismo nombre. Para obtener más información, vea

/debug (Opciones del compilador de C#).
--define:symbol

-d:symbol
Define un símbolo para su uso en la compilación condicional.
--deterministic[+|-] Genera un ensamblado determinista (con el GUID y la marca de tiempo de la versión del módulo). Esta opción no se puede usar con números de versión comodín, y solo admite tipos de depuración insertados y portátiles
--doc:xmldoc-filename Indica al compilador que genere comentarios de documentación XML en el archivo especificado. Para obtener más información, consulta XML Documentation.

Esta opción del compilador es equivalente a la opción del compilador de C# del mismo nombre. Para obtener más información, consulte /doc (Opciones del compilador de C#).
--fullpaths Indica al compilador que genere rutas de acceso completas.

Esta opción del compilador es equivalente a la opción del compilador de C# del mismo nombre. Para obtener más información, consulte /fullpaths (Opciones del compilador de C#).
--help

-?
Muestra información de uso, incluida una breve descripción de todas las opciones del compilador.
--highentropyva[+|-] Habilita o deshabilita la selección aleatoria del diseño del espacio de direcciones (ASLR) de alta entropía, una característica de seguridad mejorada. El sistema operativo selecciona aleatoriamente las ubicaciones en memoria en las que se carga la infraestructura de las aplicaciones (como la pila y el montón). Si habilita esta opción, los sistemas operativos pueden usar esta selección aleatoria para emplear el espacio de direcciones completo de 64 bits en una máquina de 64 bits.
--keycontainer:key-container-name Especifica un contenedor de claves de nombre seguro.
--keyfile:filename Especifica el nombre de un archivo de clave pública para firmar el ensamblado generado.
--lib:folder-name

-I:folder-name
Especifica un directorio en el que buscar ensamblados a los que se hace referencia.

Esta opción del compilador es equivalente a la opción del compilador de C# del mismo nombre. Para obtener más información, consulte /lib (Opciones del compilador de C#).
--linkresource:resource-info Vincula un recurso especificado al ensamblado. El formato de la información de los recursos es filename[name[public|private]]

La vinculación de un único recurso con esta opción es una alternativa a insertar un archivo de recursos completo con la opción --resource.

Esta opción del compilador es equivalente a la opción del compilador de C# del mismo nombre. Para obtener más información, consulte /linkresource (Opciones del compilador de C#).
--mlcompatibility Omite las advertencias que aparecen cuando se usan características diseñadas para la compatibilidad con otras versiones de ML.
--noframework Deshabilita la referencia predeterminada al ensamblado de .NET Framework.
--nointerfacedata Indica al compilador que omita el recurso que normalmente agrega a un ensamblado que incluye metadatos específicos de F#.
--nologo No muestra el texto del banner al iniciar el compilador.
--nooptimizationdata Indica al compilador que incluya solo la optimización esencial para implementar construcciones insertadas. Evita la inserción entre módulos, pero mejora la compatibilidad binaria.
--nowin32manifest Indica al compilador que omita el manifiesto de Win32 predeterminado.
--nowarn:warning-number-list Deshabilita advertencias específicas que aparecen por número. Separe cada número de advertencia por una coma. Puede averiguar el número de advertencia de cualquier advertencia en la salida de la compilación.

Esta opción del compilador es equivalente a la opción del compilador de C# del mismo nombre. Para obtener más información, consulte /nowarn (Opciones del compilador de C#).
--optimize[+|-] [optimization-option-list]

-O[+|-] [optimization-option-list]
Habilita o deshabilita las optimizaciones. Algunas opciones de optimización se pueden deshabilitar o habilitar de forma selectiva mediante su enumeración. Estas son: nojitoptimize, nojittracking, nolocaloptimize, nocrossoptimize, notailcalls.
--out:output-filename

-o:output-filename
Especifica el nombre del ensamblado o módulo compilado.

Esta opción del compilador es equivalente a la opción del compilador de C# del mismo nombre. Para obtener más información, consulte /out (Opciones del compilador de C#).
--pathmap:path=sourcePath,... Especifica cómo asignar rutas físicas a nombres de ruta de origen generados por el compilador.

Esta opción del compilador es equivalente a la opción del compilador de C# del mismo nombre. Para obtener más información, vea /pathmap (Opciones del compilador de C#).
--pdb:pdb-filename Asigna un nombre al archivo PDB (base de datos de programa) de depuración de salida. Esta opción solo se aplica cuando --debug también está habilitado.

Esta opción del compilador es equivalente a la opción del compilador de C# del mismo nombre. Para obtener más información, vea /pdb (Opciones del compilador de C#).
--platform:platform-name Especifica que el código generado solo se va a ejecutar en la plataforma especificada (x86, Itanium o x64) o, si se elige el nombre de la plataforma anycpu, especifica que el código generado se puede ejecutar en cualquier plataforma.

Esta opción del compilador es equivalente a la opción del compilador de C# del mismo nombre. Para obtener más información, consulte /platform (Opciones del compilador de C#).
--preferreduilang:lang Especifica el nombre de la referencia cultural del idioma de salida preferido (por ejemplo, es-ES, ja-JP).
--quotations-debug Especifica que se debe emitir información adicional de depuración para expresiones derivadas de literales de expresiones delimitadas de F# y definiciones reflejadas. La información de depuración se agrega a los atributos personalizados de un nodo del árbol de expresión de F#. Vea Expresiones de código delimitadas y Expr.CustomAttributes.
--reference:assembly-filename

-r:assembly-filename
Hace que el código de un ensamblado de F# o .NET Framework esté disponible para el código que se está compilando.

Esta opción del compilador es equivalente a la opción del compilador de C# del mismo nombre. Para obtener más información, consulte /reference (Opciones del compilador de C#).
--resource:resource-filename Inserta un archivo de recursos administrado en el ensamblado generado.

Esta opción del compilador es equivalente a la opción del compilador de C# del mismo nombre. Para obtener más información, consulte /resource (Opciones del compilador de C#).
--sig:signature-filename Genera un archivo de firma basado en el ensamblado generado. Para obtener más información sobre los archivos de firma, vea Firmas.
--simpleresolution Especifica que las referencias de ensamblado se deben resolver mediante reglas Mono basadas en directorios en lugar de resolución de MSBuild. El valor predeterminado es usar la resolución de MSBuild, excepto cuando se ejecuta en Mono.
--standalone Especifica que hay que generar un ensamblado que contenga todas sus dependencias para que se ejecute por sí mismo sin necesidad de ensamblados adicionales, como la biblioteca de F#.
--staticlink:assembly-name Vincula estáticamente el ensamblado especificado y todos los archivos DLL a los que se hace referencia que dependen de este ensamblado. Use el nombre del ensamblado, no el nombre del archivo DLL.
--subsystemversion Especifica la versión del subsistema del sistema operativo que va a usar el ejecutable generado. Use 6.02 para Windows 8.1, 6.01 para Windows 7, 6.00 para Windows Vista. Esta opción solo se aplica a los archivos ejecutables, no a los archivos DLL, y solo debe usarse si la aplicación depende de características de seguridad específicas disponibles solo en determinadas versiones del sistema operativo. Si se usa esta opción y un usuario intenta ejecutar la aplicación en una versión inferior del sistema operativo, se produce un error con un mensaje de error.
--tailcalls[+|-] Habilita o deshabilita el uso de la instrucción IL de cola, lo que hace que el marco de pila se reutilice en las funciones recursivas de cola. Esta opción está habilitada de forma predeterminada.
--target:[exe|winexe|library|module] filename Especifica el tipo y el nombre de archivo del código compilado generado.
  • exe significa una aplicación de consola.
  • winexe significa una aplicación Windows, que difiere de la aplicación de consola en que no tiene flujos de entrada y salida estándar (stdin, stdout y stderr) definidos.
  • library es un ensamblado sin un punto de entrada.
  • module es un módulo de .NET Framework (.netmodule) que se puede combinar posteriormente con otros módulos en un ensamblado.
--times Muestra información de tiempo para la compilación.
--utf8output Habilita la impresión de la salida del compilador en la codificación UTF-8.
--warn:warning-level Establece un nivel de advertencia (0 a 5). El nivel predeterminado es 3. Cada advertencia recibe un nivel en función de su gravedad. El nivel 5 proporciona más advertencias, aunque menos graves, que el nivel 1.

Esta opción del compilador es equivalente a la opción del compilador de C# del mismo nombre. Para obtener más información, consulte /warn (Opciones del compilador de C#).
--warnon:warning-number-list Habilita advertencias específicas que podrían estar desactivadas de manera predeterminada o deshabilitadas por otra opción de línea de comandos. La lista está separada por comas.
--warnaserror[+|-] [warning-number-list] Habilita o deshabilita la opción para notificar advertencias como errores. Puede proporcionar números de advertencia específicos para que estén deshabilitadas o habilitadas. Las opciones posteriores de la línea de comandos invalidan las opciones anteriores de esta. Por ejemplo, para especificar las advertencias que no quiere notificar como errores, especifique --warnaserror+--warnaserror-:warning-number-list.

Esta opción del compilador es equivalente a la opción del compilador de C# del mismo nombre. Para obtener más información, consulte /warnaserror (Opciones del compilador de C#).
--win32manifest:manifest-filename Agrega un archivo de manifiesto Win32 a la compilación. Esta opción del compilador es equivalente a la opción del compilador de C# del mismo nombre. Para obtener más información, consulte //win32manifest (opciones del compilador de C#).
--win32res:resource-filename Agrega un archivo de recursos Win32 a la compilación.

Esta opción del compilador es equivalente a la opción del compilador de C# del mismo nombre. Para obtener más información, vea /win32res (Opciones del compilador de C#).

Advertencias de participación

El compilador de F# admite varias advertencias de participación:

Number Resumen Nivel Descripción
21 Recursividad comprobada en tiempo de ejecución 5 Advierte si se comprueba la corrección de inicialización de un uso recursivo en tiempo de ejecución.
22 Enlaces ejecutados fuera del orden 5 Advierte si se puede ejecutar un enlace recursivo fuera del orden debido a una referencia hacia delante.
52 Copias implícitas de estructuras 5 Advierte si se copia una estructura inmutable para asegurarse de que una operación no mute el original.
1178 Igualdad o comparación implícita 5 Advierte si una declaración de tipos de F# se deduce implícitamente como NoEquality o NoComparison pero el atributo no está presente en el tipo.
1182 Variables sin utilizar N/D Advierte de variables no utilizadas.
3180 Asignaciones implícitas del montón N/D Advierte si un elemento local mutable se asigna implícitamente como una celda de referencia porque se ha capturado mediante una clausura.
3366 Notación de índice N/D Advierte si se usa la notación de índice expr.[idx] de F# 5.
3517 InlineIfLambda failure N/D Advierte si el optimizador de F# no puede insertar un valor InlineIfLambda, por ejemplo, si se ha proporcionado un valor de función calculada en lugar de una expresión lambda explícita.
3387 Conversión op_Implicit N/D Advierte si se usa una conversión implícita de .NET en un argumento de método.
3388 Difusión implícita adicional N/D Advierte si se usa implícitamente una difusión adicional, agregada en F# 6.
3389 Ampliación implícita N/D Advierte si se usa una ampliación numérica implícita.
3390 Comentarios de documentación XML con formato incorrecto N/D Avisa cuando los comentarios de documentación XML tienen un formato incorrecto de varias maneras.

Puede habilitar estas advertencias mediante /warnon:NNNN o <WarnOn>NNNN</WarnOn>, donde NNNN es el número de advertencia correspondiente. (También puede usar la sintaxis <WarnOn>FSNNNN</WarnOn>, por ejemplo, <WarnOn>FS3388</WarnOn>). Tenga en cuenta que si la propiedad WarnOn se especifica varias veces, solo se usa la última aparición. Para especificar varias advertencias, proporcione la propiedad WarnOn una vez con una cadena separada por comas como su contenido: <WarnOn>3388,3559</WarnOn>.

Title Descripción
Opciones de F# Interactive Describe las opciones de línea de comandos compatibles con el intérprete de F#, fsi.exe.
Referencia de propiedades del proyecto Describe la interfaz de usuario de los proyectos, incluidas las páginas de propiedades del proyecto que proporcionan opciones de compilación.