编译器选项 (F#)

本主题描述用于 F# 编译器 (fsc.exe) 的编译器命令行选项。 也可通过设置项目属性来控制编译环境。

按字母顺序列出的编译器选项

下表显示按字母顺序列出的编译器选项。 一些 F# 编译器选项会与 C# 编译器选项类似。 如果确实如此,则将提供一个指向 C# 编译器选项主题的链接。

编译器选项

描述

-a <output-filename>

生成库并指定其文件名。 此选项是 --target:library <filename> 的缩写形式。

--baseaddress:<string>

指定要生成的库的基址。

此编译器选项与同名的 C# 编译器选项等效。 有关详细信息,请参阅 /baseaddress(C# 编译器选项)

--codepage:<int>

指定用来读取源文件的代码页。

此编译器选项与同名的 C# 编译器选项等效。 有关详细信息,请参阅 /codepage(C# 编译器选项)

--consolecolors

指定错误和警告使用控制台上的彩色编码文本。

--crossoptimize[+|-]

启用或禁用跨模块优化。

--delaysign[+|-]

仅使用强名称密钥的公共部分对程序集进行延迟签名。

此编译器选项与同名的 C# 编译器选项等效。 有关详细信息,请参阅 /delaysign(C# 编译器选项)

--checked[+|-]

启用或禁用溢出检查的生成。

此编译器选项与同名的 C# 编译器选项等效。 有关详细信息,请参阅 /checked(C# 编译器选项)

--debug[+|-]

-g[+|-]

--debug:[full|pdbonly]

-g: [full|pdbonly]

启用或禁用调试信息的生成,或指定要生成的调试信息的类型。 默认值为 full,允许附加到正在运行的程序。 选择 pdbonly 可获取存储在 pdb(程序数据库)文件中有限的调试信息。

等效于同名的 C# 编译器选项。 有关更多信息,请参见

/debug (C# 编译器选项).

--define:<string>

-d:<string>

定义在条件编译中使用的符号。

--doc:<xmldoc-filename>

指示编译器为指定的文件生成 XML 文档注释。 有关详细信息,请参阅 XML 文档 (F#)

此编译器选项与同名的 C# 编译器选项等效。 有关详细信息,请参阅 /doc(C# 编译器选项)

--fullpaths

指示编译器生成完全限定路径。

此编译器选项与同名的 C# 编译器选项等效。 有关详细信息,请参阅 /fullpaths(C# 编译器选项)

--help

-?

显示用法信息,包括所有编译器选项的简短说明。

--highentropyva[+|-]

启用或禁用高熵的地址空间布局随机化 (ASLR),它是增强的安全功能。 操作系统随机化内存中加载应用程序的基础结构的位置(例如堆栈和堆)。 如果启用此选项,操作系统将使用此随机化以在 64 位计算机上利用完整的 64 位地址空间。

--keycontainer:<string>

指定强名称密钥容器。

--keyfile:<filename>

指定用来为生成的程序集签名的公钥文件的名称。

--lib:<folder-name>

-I:<folder-name>

指定要从中搜索引用的程序集的目录。

此编译器选项与同名的 C# 编译器选项等效。 有关详细信息,请参阅 /lib(C# 编译器选项)

--linkresource:<resource-info>

将指定的资源链接到该程序集。 resource-info 的格式为 filename[,name[,public |private]]

使用此选项链接单个资源的做法替代使用 --resource 选项嵌入整个资源文件的做法。

此编译器选项与同名的 C# 编译器选项等效。 有关详细信息,请参阅 /linkresource (C# 编译器选项)

--mlcompatibility

忽略在使用为与其他版本的 ML 兼容所设计的功能时出现的警告。

--noframework

禁用对 .NET Framework 程序集的默认引用。

--nointerfacedata

指示编译器省略其通常向包含 F# 特定元数据的程序集中添加的资源。

--nologo

在启动编译器时不显示横幅文本。

--nooptimizationdata

指示编译器仅包含实现内联构造所必需的优化。 禁止跨模块内联,但会提高二进制兼容性。

--nowin32manifest

指示编译器省略默认的 Win32 清单。

--nowarn:<int-list>

禁用按编号列出的特定警告。 将用逗号分隔每个警告编号。 可以从编译输出中找到任何警告的警告编号。

此编译器选项与同名的 C# 编译器选项等效。 有关详细信息,请参阅 /nowarn(C# 编译器选项)

--optimize[+|-] [<string-list>]

-O[+|-] [<string-list>]

启用或禁用优化。 对于一些优化选项而言,可以通过列出它们来有选择性地禁用或启用它们。 这些优化选项是:nojitoptimize、nojittracking、nolocaloptimize、nocrossoptimize 和 notailcalls。

--out:<output-filename>

-o:<output-filename>

指定已编译的程序集或模块的名称。

此编译器选项与同名的 C# 编译器选项等效。 有关详细信息,请参阅 /out(C# 编译器选项)

--pdb:<pdb-filename>

为输出调试 PDB(程序数据库)文件命名。 此选项仅在启用 --debug 时适用。

此编译器选项与同名的 C# 编译器选项等效。 有关详细信息,请参阅 /pdb(C# 编译器选项)

--platform:<platform-name>

指定生成的代码将仅在指定的平台(x86、Itanium 或 x64)上运行;如果选择了平台名称 anycpu,则用于指定生成的代码可以在任何平台上运行。

此编译器选项与同名的 C# 编译器选项等效。 有关详细信息,请参阅 /platform(C# 编译器选项)

--quotations-debug

指定额外的调试信息应为从 F# 引用文本派生并反映定义的表达式发出。 调试信息已添加到 F# 表达式树节点的自定义属性。 请参阅 代码引用 (F#)Expr.CustomAttributes

--reference:<assembly-filename>

-r <assembly-filename>

使 F# 或 .NET Framework 程序集中的代码可供所编译的代码使用。

此编译器选项与同名的 C# 编译器选项等效。 有关详细信息,请参阅 /reference(C# 编译器选项)

--resource:<resource-filename>

将托管资源文件嵌入到生成的程序集中。

此编译器选项与同名的 C# 编译器选项等效。 有关详细信息,请参阅 /resource (C# 编译器选项)

--sig:<signature-filename>

基于生成的程序集生成签名文件。 有关签名文件的更多信息,请参见签名 (F#)

--simpleresolution

指定应使用基于目录的 Mono 规则而不是 MSBuild 解析来对程序集引用进行解析。 默认设置是使用 MSBuild 解析(在 Mono 下运行时除外)。

--standalone

指定生成包含其所有依赖项的程序集,以便在无需任何其他程序集的需求(例如 F# 库)的情况下独立运行。

--staticlink:<assembly-name>

以静态方式链接给定的程序集和依赖此程序集的所有引用的 DLL。 使用程序集名称,而不是 DLL 名称。

--subsystemversion

指定生成的可执行文件中使用的操作系统子系统的版本。 将 6.02 用于 Windows 8,6.01 用于 Windows 7,6.00 用于 Windows Vista。 此选项仅适用于可执行文件,非 DLL,并且只在应用程序依赖于仅适用于某些操作系统版本上的特定安全功能时才需要使用。 如果使用此选项,且用户尝试在操作系统的较低版本中执行您的应用程序,将会失败并显示一条错误消息。

--tailcalls[+|-]

启用或启用对尾 IL 指令的使用,尾 IL 指令将使得为尾递归函数重用堆栈帧。 默认情况下,启用此选项。

--target:[exe | winexe | library | module ] <output-filename>

指定生成的已编译代码的类型和文件名。

  • exe 表示一个控制台应用程序。

  • winexe 表示一个 Windows 应用程序,该应用程序不同于控制台应用程序,它没有定义标准的输入/输出流(stdin、stdout 和 stderr)。

  • library 是一个没有入口点的程序集。

  • module 是 .NET Framework 模块 (.netmodule),稍后可将此模块与其他模块一起合并到一个程序集中。

此编译器选项与同名的 C# 编译器选项等效。 有关详细信息,请参阅 /target(C# 编译器选项)

--times

显示编译的计时信息。

--utf8output

启用以 UTF-8 编码形式打印编译器输出。

--warn:<warning-level>

设置警告等级(0 到 5)。 默认级别为 3。 将根据警告的严重级别为每个警告给定一个等级。 等级 5 的警告数多于等级 1 的警告数,但前者的严重级别低于后者。

5 级警告是:21(运行时已选中的递归使用),22(let rec 评估的顺序紊乱),45(完全的抽象)和 52(防御性复制)。 其他所有警告的级别都是 2。

此编译器选项与同名的 C# 编译器选项等效。 有关详细信息,请参阅 /warn(C# 编译器选项)

--warnon:<int-list>

启用可能在默认情况下关闭或由另一个命令行选项禁用的特定警告。 在 F# 3.0 中,只有 1182(未使用的变量)警告在默认情况下关闭。

--warnaserror[+|-] [<int-list>]

启用或禁用将警告报告为错误的选项。 可以提供要禁用或启用的具体警告编号。 命令行中后来的选项会重写命令行中之前的选项。 例如,要指定不想将其报告为错误的警告,请指定 --warnaserror+ --warnaserror-:<int-list>。

此编译器选项与同名的 C# 编译器选项等效。 有关详细信息,请参阅 /warnaserror(C# 编译器选项)

--win32manifest:manifest-filename

将 Win32 清单文件添加到编译。 此编译器选项与同名的 C# 编译器选项等效。 有关详细信息,请参阅 /win32manifest(C# 编译器选项)

--win32res:resource-filename

向编译中添加 Win32 资源文件。

此编译器选项与同名的 C# 编译器选项等效。 有关详细信息,请参阅 /win32res(C# 编译器选项)

相关主题

标题

描述

F# Interactive 选项

描述 F# 解释器 (fsi.exe) 支持的命令行选项。

项目属性引用

描述项目的用户界面,包括用于提供生成选项的项目属性页。