Visual Studio で Visual F# を使用して開発する

この記事には、F# 開発用の Visual Studio 機能に関する情報が含まれています。

F# のサポートをインストールする

Visual Studio で F# を使用して開発するには、まず、.NET デスクトップ開発ワークロードをインストールします (まだインストールしていない場合)。 Visual Studio ワークロードは Visual Studio インストーラーを使用してインストールします。このインストーラーは、[ツール]>[ツールと機能を取得] の順に選択して開くことができます。

.NET desktop development workload in Visual Studio

F# プロジェクトの機能

Visual Studio の F# では、さまざまなプロジェクトと項目テンプレートを使用することができます。 次のイメージは、.NET Core と .NET Standard の F# プロジェクト テンプレートの一部を示しています。

F# project templates in Visual Studio

次のイメージは、F# 項目テンプレートの一部を示しています。

F# item templates in Visual Studio

データ アクセスの項目テンプレートの詳細については、F# 型プロバイダーに関するページを参照してください。

次の表は、F# のプロジェクト プロパティの機能を要約したものです。

プロジェクトの設定 F# でのサポート メモ
リソース ファイル はい
ビルド、デバッグ、および参照の設定 はい
マルチ ターゲット はい
アイコンとマニフェスト いいえ コンパイラ コマンドライン オプションを通じて使用できます。
ASP.NET クライアント サービス いいえ
ClickOnce いいえ 別の .NET 言語 (該当する場合) でクライアント プロジェクトを使用します。
厳密な名前付け いいえ コンパイラ コマンドライン オプションを通じて使用できます。
アセンブリの発行とバージョン管理 いいえ
コード分析 いいえ コード分析ツールは、手動で、またはビルド後コマンドの一部として実行することができます。
セキュリティ (信頼レベルの変更) いいえ

プロジェクト デザイナー

プロジェクト デザイナーは、関連機能でグループ化された複数のプロジェクト プロパティ ページで構成されます。 F# プロジェクトで使用できるページは、ほとんどの場合、他の言語で使用できるページのサブセットです。これについては、以下の表で説明します。 対応する C# プロジェクト デザイナー ページへのリンクが提供されています。

プロジェクト デザイナー ページ 関連リンク 説明
Application [アプリケーション] ページ (プロジェクト デザイナー) アプリケーション レベルの設定とプロパティを指定することができます。たとえば、ライブラリと実行可能ファイルのどちらを作成するのか、アプリケーションのターゲットとなるのはどのバージョンの .NET か、アプリケーションで使用されるリソース ファイルはどこに格納されるのかなどです。
ビルド プロジェクト デザイナーの [ビルド] ページ コードのコンパイル方法を制御できます。
ビルド イベント [ビルド イベント] ページ (プロジェクト デザイナー) コンパイルの前または後に実行するコマンドを指定できます。
デバッグ [デバッグ] ページ (プロジェクト デザイナー) デバッグ中のアプリケーションの実行方法を制御できます。 これには、使用するコマンドとアプリケーションの開始ディレクトリ、ネイティブ コードや SQL などの有効にする特別なデバッグ モードが含まれます。
パッケージ (.NET SDK のみ) 該当なし NuGet パッケージとして発行するときに、NuGet パッケージのメタデータを定義できます。
参照パス プロジェクト内の参照の管理 コードが依存するアセンブリを検索する場所を指定できます。
リソース (.NET SDK のみ) 該当なし 既定のリソース ファイルを生成して管理することができます。

F# 固有の設定

次の表は、F# に固有の設定を要約したものです。

プロジェクト デザイナー ページ 設定 説明
ビルド 末尾呼び出しの生成 選択した場合、末尾の Microsoft Intermediate Language (MSIL) 命令の使用が有効になります。 これにより、スタック フレームが末尾再帰関数で再利用されます。 --tailcalls コンパイラ オプションと同等のものです。
ビルド その他のフラグ 追加のコンパイラ コマンドライン オプションを指定することができます。

コード エディターとテキスト エディターの機能

F# では、Visual Studio のコード エディターとテキスト エディターの次の機能がサポートされています。

機能 説明 F# でのサポート
自動コメント コード セクションのコメントを作成または解除できます。 はい
オート フォーマット 標準的なインデントとスタイルを使用してコードを再フォーマットします。 いいえ
ブックマーク エディターで場所を保存できます。 はい
インデントの変更 選択行のインデントを設定または解除します。 はい
スマート インデント F# スコープ規則に従って、自動的にカーソルのインデントを設定および設定解除します。 はい
テキストの検索と置換 ファイル、プロジェクト、またはソリューションで検索し、場合によってはテキストを変更できます。 はい
.NET API の定義に移動する .NET API にカーソルがある場合は、.NET メタデータから生成されたコードが表示されます。 いいえ
ユーザー定義 API の定義へ移動 定義したプログラム エンティティにカーソルがある場合は、エンティティが定義されているコード内の場所にカーソルを移動します。 はい
[指定行へのジャンプ] 行番号を指定して、ファイル内の特定の行に移動できます。 はい
ファイルの上部にあるナビゲーション バー 関数名などを使用して、コード内の場所に移動できます。 はい
ブロック構造のガイドライン F# スコープを示すガイドラインが表示されます。カーソルを置けば、プレビューを表示できます。 はい
アウトライン コードのセクションを折りたたみ、よりコンパクトなビューを作成できます。 はい
タブにする スペースをタブに変換します。 はい
型の色づけ 定義された型名を特別な色で表示します。 はい
クイック検索。 クイック検索、[検索と置換] ウィンドウに関する記述を参照してください。 ファイルまたはプロジェクトで検索できます。 はい
Ctrl キーを押しながらクリックして [定義へ移動] Ctrl キーを押しながら F# シンボルをクリックして、[定義へ移動] を呼び出すことができます。 はい
QuickInfo から [定義へ移動] [定義へ移動] を呼び出す、ツールヒント内のクリック可能なシンボル。 はい
すべてに移動 Ctrl+T キーを使用して、すべての F# の構成要素に対して、グローバルなあいまい一致ナビゲーションを有効にします。 はい
インラインの名前変更 出現するすべてのシンボル インラインの名前を変更します。 はい
すべての参照の検索 コードベースで出現するすべてのシンボルを検索します。 はい
名前コード修正の簡素化 F# シンボルの不要な修飾子を削除します。 はい
未使用の open ステートメント コード修正の削除 ドキュメント内の不要な open ステートメントをすべて削除します。 はい
未使用値のコード修正 未使用の識別子の名前をアンダースコアに変更するよう提案します。 はい

Visual Studio でのコード編集に関する一般的な情報と、テキスト エディターの機能については、「エディターでのコードの作成」を参照してください。

IntelliSense の機能

次の表は、F# でサポートされている IntelliSense の機能とサポートされていない機能を要約したものです。

機能 説明 F# でのサポート
インターフェイスの自動実装 インターフェイス メソッドのコード スタブを生成します。 はい
コード スニペット 一般的なコーディング構成要素のライブラリからトピックにコードを挿入します。 いいえ
入力候補 入力時に単語や名前の入力候補を提示して、入力の手間を省きます。 はい
自動補完 有効にすると、ユーザーが候補のいずれかを選ぶか、Ctrl+Space キーを押すまで待たずに、入力時に最初に一致したものが単語補完で選択されます。 はい
開かれていない名前空間内のシンボル補完の提案 自動補完では、開かれていない名前空間にある一致するシンボルが提示され、選択時に対応する open ステートメントでの補完が提案されます。 はい
コード要素の生成 さまざまな構成要素のスタブ コードを生成できます。 いいえ
メンバーを一覧表示する メンバー アクセス演算子 (.) を入力すると、型のメンバーが示されます。 はい
using/open の整理 C# の using ステートメントや F# の open ディレクティブで参照される名前空間を整理します。 いいえ
パラメーター ヒント 関数呼び出しの入力時に、パラメーターに関する役立つ情報が表示されます。 はい
クイック ヒント コード内の識別子の宣言全体が表示されます。 はい
自動かっこ挿入 トランザクション的な方法で F# の中かっこのような構文の構成要素を自動的に補完します。 はい

IntelliSense の一般的な情報については、IntelliSense の使用に関するページを参照してください。

デバッグ機能

次の表は、F# コードのデバッグ時に使用できる機能を要約したものです。

機能 説明 F# でのサポート
[自動変数] ウィンドウ 自動変数または一時変数を表示します。 いいえ
ブレークポイント デバッグ中に特定の箇所でコードの実行を一時停止できます。 はい
条件付きブレークポイント 実行を一時停止するかどうかを決定する条件をテストするブレークポイントを有効にします。 はい
エディット コンティニュ 実行中のプログラムをデバッグするときに、デバッガーを停止したり再起動したりせずにコードを変更したりコンパイルしたりできます。 いいえ
式エバリュエーター 実行時にコードを評価して実行します。 いいえ。ただし、C# 構文を使用する必要はありますが、C# 式エバリュエーターを使用することはできます。
デバッグ履歴 以前に実行されたコードにステップ インできます。 はい
ローカル ウィンドウ ローカルで定義されている値と変数を表示します。 はい
[カーソルまで実行] カーソルがある行に達するまで、コードを実行できます。 はい
ステップ イン 実行を進めて、関数呼び出しに移動できます。 はい
[ステップ オーバー] 現在のスタック フレームで実行を進め、関数呼び出しを超えて移動できます。 はい

Visual Studio デバッガーの一般的な情報について、「Visual Studio でのデバッグ」を参照してください。

その他のツール

次の表は、Visual Studio ツールでの F# のサポートを要約したものです。

ツール 説明 F# でのサポート
呼び出し階層 コード内の関数呼び出しの入れ子構造を表示します。 いいえ
コード メトリックス 行数など、コードに関する情報を収集します。 いいえ
クラス ビュー プロジェクト内のコードの型ベース ビューを提供します。 いいえ
[エラー一覧] ウィンドウ コードのエラーの一覧を表示します。 はい
F# Interactive プロジェクトのビルドに関係なく、F# コードを入力して (またはコピーして貼り付け)、すぐに実行できます。 [F# インタラクティブ] ウィンドウは REPL (read–eval–print loop) です。 はい
オブジェクト ブラウザー アセンブリで型を表示できます。 コンパイル済みアセンブリに表示される F# 型は、作成したとおりには表示されません。 F# 型のコンパイル済み表現を参照できますが、F# で示されるように型を表示することはできません。
[出力] ウィンドウ ビルド出力を表示します。 はい
パフォーマンス分析 コードのパフォーマンスを測定するためのツールを提供します。 はい
[プロパティ] ウィンドウ フォーカスがある開発環境のオブジェクトのプロパティを表示して、編集することができます。 はい
[サーバー エクスプローラー] さまざまなサーバー リソースと対話する方法を提供します。 はい
ソリューション エクスプローラー プロジェクトとファイルを表示および管理できます。 はい
タスク一覧 コードに関連する作業項目を管理できます。 いいえ
テスト プロジェクト コードをテストする際に役立つ機能を提供します。 いいえ
ツールボックス コントロールや、テキストまたはコードのセクションなど、ドラッグ可能なオブジェクトを含むタブが表示されます。 はい

関連項目