コンパイラ オプション

この記事では、F# コンパイラのコンパイラ コマンド ライン オプションについて説明します。 コマンド dotnet build は、F# プロジェクト ファイルに対して F# コンパイラを呼び出します。 F# プロジェクト ファイルには、拡張子 .fsproj が付いています。

コンパイル環境は、プロジェクトのプロパティを設定して制御することもできます。 .NET Core をターゲットとするプロジェクトでは、追加のコマンド ライン オプションを指定するために、「その他のフラグ」プロパティ (.fsproj<OtherFlags>...</OtherFlags>) が使用されます。

アルファベット順のコンパイラ オプション

次の表は、コンパイラ オプションのアルファベット順の一覧です。 一部の F# コンパイラ オプションは C# コンパイラ オプションに似ています。 それらについては、C# コンパイラ オプションのトピックへのリンクも用意されています。

コンパイラ オプション 説明
--allsigs コンパイルで、ソース ファイルごとに新しいシグネチャ ファイルを生成します (または、既存のシグネチャ ファイルを再生成します)。 シグネチャ ファイルの詳細については、「シグネチャ」を参照してください。
-a filename.fs 指定されたファイルからライブラリを生成します。 このオプションは、--target:library filename.fs の省略形です。
--baseaddress:address DLL を読み込む位置に推奨されるベース アドレスを指定します。

このコンパイラ オプションは、同じ名前の C# コンパイラ オプションに相当します。 詳しくは、「/baseaddress (C# コンパイラ オプション)」をご覧ください。
--codepage:id 必要とするページが、システムの現在の既定のコード ページでない場合に、コンパイル時に使用するコード ページを指定します。

このコンパイラ オプションは、同じ名前の C# コンパイラ オプションに相当します。 詳細については、/code pages (C# コンパイラ オプション) に関するページを参照してください。
--consolecolors エラーおよび警告がコンソールの色分けされたテキストを使用することを指定します。
--crossoptimize[+ or -] モジュール間の最適化を有効または無効にします。
--delaysign[+|-] 厳密な名前のキーのパブリックな部分のみを使ってアセンブリに遅延署名します。

このコンパイラ オプションは、同じ名前の C# コンパイラ オプションに相当します。 詳しくは、「/delaysign (C# コンパイラ オプション)」をご覧ください。
--checked[+|-] オーバーフロー チェックの生成を有効または無効にします。

このコンパイラ オプションは、同じ名前の C# コンパイラ オプションに相当します。 詳しくは、「/checked (C# コンパイラ オプション)」をご覧ください。
--debug[+|-]

-g[+|-]

--debug:[full|pdbonly]

-g: [full|pdbonly]
デバッグ情報の生成を有効または無効にしたり、生成するデバッグ情報の種類を指定したりします。 既定値は、実行中のプログラムにアタッチできる full です。 pdb (プログラム データベース) ファイルに格納するデバッグ情報を制限する場合は、pdbonly を選択します。

同じ名前の C# コンパイラ オプションに相当します。 詳細については、「

/debug (C# コンパイラ オプション)
--define:symbol

-d:symbol
条件付きコンパイルで使用する記号を定義します。
--deterministic[+|-] 決定論的アセンブリを作成します (モジュール バージョン GUID やタイムスタンプなど)。 このオプションは、ワイルドカードのバージョン番号と一緒に使用することはできません。また、埋め込みおよび移植可能のデバッグの種類のみをサポートします。
--doc:xmldoc-filename 指定したファイルに XML ドキュメント コメントを生成するようにコンパイラに指示します。 詳細については、「 XML Documentation」を参照してください。

このコンパイラ オプションは、同じ名前の C# コンパイラ オプションに相当します。 詳しくは、「/doc (C# コンパイラ オプション)」をご覧ください。
--fullpaths 絶対パスを生成するようコンパイラに指示します。

このコンパイラ オプションは、同じ名前の C# コンパイラ オプションに相当します。 詳しくは、「/fullpaths (C# コンパイラ オプション)」をご覧ください。
--help

-?
使用方法を表示します。すべてのコンパイラ オプションの簡単な説明が表示されます。
--highentropyva[+|-] 強化されたセキュリティ機能である、高いエントロピの ASLR (Address Space Layout Randomization) を有効または無効にします。 OS は、アプリケーションのインフラストラクチャ (スタックとヒープなど) が読み込まれるメモリの位置をランダム化します。 このオプションを有効にすると、オペレーティング システムではこのランダム化を使用して、64 ビット コンピューターで完全な 64 ビット アドレス空間を使用できます。
--keycontainer:key-container-name 厳密な名前のキー コンテナーを指定します。
--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:warning-number-list 番号で指定した特定の警告を無効にします。 それぞれの警告番号はコンマで区切ります。 警告の警告番号はコンパイルの出力で確認できます。

このコンパイラ オプションは、同じ名前の C# コンパイラ オプションに相当します。 詳しくは、「/nowarn (C# コンパイラ オプション)」をご覧ください。
--optimize[+|-] [optimization-option-list]

-O[+|-] [optimization-option-list]
最適化を有効または無効にします。 一部の最適化オプションについては、選択して指定したものだけを無効または有効にすることができます。 これには、nojitoptimizenojittrackingnolocaloptimizenocrossoptimizenotailcalls があります。
--out:output-filename

-o:output-filename
コンパイルしたアセンブリまたはモジュールの名前を指定します。

このコンパイラ オプションは、同じ名前の C# コンパイラ オプションに相当します。 詳しくは、「/out (C# コンパイラ オプション)」をご覧ください。
--pathmap:path=sourcePath,... コンパイラによるソース パス名出力への物理パスのマップ方法を指定します。

このコンパイラ オプションは、同じ名前の C# コンパイラ オプションに相当します。 詳細については、/pathmap (C# コンパイラ オプション) に関するページを参照してください。
--pdb:pdb-filename 出力デバッグ PDB (プログラム データベース) ファイルに名前を付けます。 このオプションは、--debug も有効にした場合にのみ適用されます。

このコンパイラ オプションは、同じ名前の C# コンパイラ オプションに相当します。 詳細については、/pdb (C# コンパイラ オプション) に関するページを参照してください。
--platform:platform-name 生成されたコードが、指定したプラットフォーム (x86Itanium、または x64) でのみ実行されるように指定します。または、platform-name で anycpu が選択されている場合は、生成されたコードをどのプラットフォームでも実行できるように指定します。

このコンパイラ オプションは、同じ名前の C# コンパイラ オプションに相当します。 詳しくは、「/platform (C# コンパイラ オプション)」をご覧ください。
--preferreduilang:lang 優先する出力用言語のカルチャ名を指定します (例: es-ESja-JP)。
--quotations-debug 追加のデバッグ情報が 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 生成されるアセンブリに基づいてシグネチャ ファイルを生成します。 シグネチャ ファイルの詳細については、「シグネチャ」を参照してください。
--simpleresolution MSBuild の解決方法ではなくディレクトリベースの Mono 規則を使用して解決する必要がある、アセンブリ参照を指定します。 既定では、Mono で実行する場合を除き、MSBuild の解決方法が使用されます。
--standalone F# ライブラリなどの追加のアセンブリを行わなくても、単独で実行できるように、すべての依存関係を含むアセンブリを生成するように指定します。
--staticlink:assembly-name 指定したアセンブリと、そのアセンブリに依存するすべての参照 DLL を静的にリンクします。 DLL 名ではなく、アセンブリ名を使用します。
--subsystemversion 生成された実行可能ファイルが使用できる OS サブシステムのバージョンを指定します。 Windows 8.1 の場合は 6.02、Windows 7 の場合は 6.01、Windows Vista の場合は 6.00 を使用します。 このオプションは、DLL ではなく、実行可能ファイルのみに適用され、アプリケーションが OS の特定のバージョンでのみ使用できる特定のセキュリティ機能に依存している場合にのみ使用される必要があります。 このオプションが使用され、低いバージョンの OS でアプリケーションを実行しようとすると、失敗してエラー メッセージが表示されます。
--tailcalls[+|-] tail IL 命令の使用を有効または無効にします。有効にすると、スタック フレームが tail 再帰関数で再利用されます。 既定では、このオプションは有効になっています。
--target:[exe|winexe|library|module] filename 生成されるコンパイル済みコードの種類とファイル名を指定します。
  • exe はコンソール アプリケーションを表します。
  • winexe は Windows アプリケーションを表します。コンソール アプリケーションとの違いは、標準入出力ストリーム (stdin、stdout、および stderr) が定義されていないことです。
  • library は、エントリ ポイントのないアセンブリです。
  • module は .NET Framework モジュール (.netmodule) です。後で他のモジュールと組み合わせて、1 つのアセンブリにまとめることができます。
--times コンパイルのタイミング情報を表示します。
--utf8output UTF-8 エンコーディングでのコンパイラ出力を有効にします。
--warn:warning-level 警告レベル (0 ~ 5) を設定します。 既定のレベルは 3 です。 各警告には、重大度に基づいてレベルが設定されます。 レベル 5 の方が重大度は低くなりますが、レベル 1 より多くの警告が表示されます。

このコンパイラ オプションは、同じ名前の C# コンパイラ オプションに相当します。 詳しくは、「/warn (C# コンパイラ オプション)」をご覧ください。
--warnon:warning-number-list 既定でオフになっている、または別のコマンド ライン オプションによって無効化されている可能性のある特定の警告を有効にします。 リストはコンマ区切りです。
--warnaserror[+|-] [warning-number-list] 警告をエラーとして報告するオプションを有効または無効にします。 特定の警告番号を指定して無効または有効にすることができます。 後のコマンド ラインのオプションが前のコマンド ラインのオプションをオーバーライドします。 たとえば、エラーとして報告される必要のない警告を指定するには、--warnaserror+--warnaserror-:warning-number-list を指定します。

このコンパイラ オプションは、同じ名前の C# コンパイラ オプションに相当します。 詳しくは、「/warnaserror (C# コンパイラ オプション)」をご覧ください。
--win32manifest:manifest-filename コンパイルに Win32 マニフェスト ファイルを追加します。 このコンパイラ オプションは、同じ名前の C# コンパイラ オプションに相当します。 詳細については、「/win32manifest (C# コンパイラ オプション)」を参照してください。
--win32res:resource-filename コンパイルに Win32 リソース ファイルを追加します。

このコンパイラ オプションは、同じ名前の C# コンパイラ オプションに相当します。 詳細については、「/win32res ((C#) コンパイラ オプション)」を参照してください。

オプトインの警告

F# コンパイラでは、いくつかのオプトイン警告がサポートされています。

数値 まとめ Level 説明
21 実行時に再帰がチェックされる 5 再帰的な使用が実行時に初期化の健全性についてチェックされると警告します。
22 バインディングが順不同で実行される 5 前方参照が原因で再帰バインディングが順不同で実行される可能性がある場合に警告します。
52 構造体の暗黙的なコピー 5 不変の構造体がコピーされたときに警告し、元の構造体が操作によって変更されないようにします。
1178 暗黙的な等価/比較 5 F# 型宣言が、暗黙的に NoEquality または NoComparison と推論されるが属性が型に存在しない場合に警告します。
1182 未使用の変数 該当なし 使用されていない変数に対して警告します。
3180 暗黙的なヒープ割り当て 該当なし 変更可能なローカルがクロージャによってキャプチャされたため、参照セルとして暗黙的に割り当てられた場合に警告します。
3366 インデックス表記 該当なし F# 5 インデックス表記 expr.[idx] が使用されている場合に警告します。
3517 InlineIfLambda エラー 該当なし F# オプティマイザーが InlineIfLambda 値のインライン化に失敗した場合に警告します。たとえば、明示的なラムダではなく、計算された関数の値が指定されている場合などです。
3387 op_Implicit 変換 該当なし メソッド引数で .NET の暗黙的な変換が使用される場合に警告します。
3388 追加の暗黙的なアップキャスト 該当なし 追加のアップキャストが暗黙的に使用され、F# 6 で追加された場合に警告します。
3389 暗黙的な拡大 該当なし 暗黙的な数値拡大が使用される場合に警告します。
3390 形式に誤りがある XML ドキュメントのコメント N/A XML ドキュメントのコメントに、さまざまな形で誤りがある場合に警告します。

これらの警告は、/warnon:NNNN または <WarnOn>NNNN</WarnOn> を使用して有効にできます。ここで、NNNN は、関連する警告番号です。 (構文 <WarnOn>FSNNNN</WarnOn> (例: <WarnOn>FS3388</WarnOn>) を使うこともできます)。WarnOn プロパティが複数回指定された場合は、最後に出現したもののみが使われることに注意してください。 複数の警告を指定するには、内容としてコンマ区切りの文字列を含む WarnOn プロパティを 1 回指定します (<WarnOn>3388,3559</WarnOn>)。

Title 説明
F# Interactive オプション F# インタープリター (fsi.exe) でサポートされるコマンド ライン オプションについて説明します。
プロジェクトのプロパティのリファレンス ビルド オプションを提供するプロジェクトのプロパティのページなど、プロジェクトの UI について説明します。