Visual Studio で Visual F# を使用して開発する
この記事には、F# 開発用の Visual Studio 機能に関する情報が含まれています。
F# のサポートをインストールする
Visual Studio で F# を使用して開発するには、まず、.NET デスクトップ開発ワークロードをインストールします (まだインストールしていない場合)。 Visual Studio ワークロードは Visual Studio インストーラーを使用してインストールします。このインストーラーは、[ツール]>[ツールと機能を取得] の順に選択して開くことができます。
F# プロジェクトの機能
Visual Studio の F# では、さまざまなプロジェクトと項目テンプレートを使用することができます。 次のイメージは、.NET Core と .NET Standard の F# プロジェクト テンプレートの一部を示しています。
次のイメージは、F# 項目テンプレートの一部を示しています。
データ アクセスの項目テンプレートの詳細については、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# で示されるように型を表示することはできません。 |
[出力] ウィンドウ | ビルド出力を表示します。 | はい |
パフォーマンス分析 | コードのパフォーマンスを測定するためのツールを提供します。 | はい |
[プロパティ] ウィンドウ | フォーカスがある開発環境のオブジェクトのプロパティを表示して、編集することができます。 | はい |
[サーバー エクスプローラー] | さまざまなサーバー リソースと対話する方法を提供します。 | はい |
ソリューション エクスプローラー | プロジェクトとファイルを表示および管理できます。 | はい |
タスク一覧 | コードに関連する作業項目を管理できます。 | いいえ |
テスト プロジェクト | コードをテストする際に役立つ機能を提供します。 | いいえ |
ツールボックス | コントロールや、テキストまたはコードのセクションなど、ドラッグ可能なオブジェクトを含むタブが表示されます。 | はい |