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

この記事には、F# 開発用の Visual Studio 機能に関する情報が含まれています。This article includes information about Visual Studio features for F# development.

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

Visual Studio で F# を使用して開発するには、まず、 .NET デスクトップ開発 ワークロードをインストールします (まだインストールしていない場合)。To develop with F# in Visual Studio, first install the .NET desktop development workload if you haven't already. Visual Studio ワークロードは Visual Studio インストーラーを使用してインストールします。このインストーラーは、 [ツール] > [ツールと機能を取得] の順に選択して開くことができます。You install Visual Studio workloads through Visual Studio Installer, which you can open by selecting Tools > Get Tools and Features.

Visual Studio の .NET デスクトップ開発ワークロード

F# プロジェクトの機能F# project features

Visual Studio の F# では、さまざまなプロジェクトと項目テンプレートを使用することができます。Various project and item templates are available for F# in Visual Studio. 次のイメージは、.NET Core と .NET Standard の F# プロジェクト テンプレートの一部を示しています。The following image shows some of the F# project templates for .NET Core and .NET Standard:

Visual Studio の F# プロジェクト テンプレート

次のイメージは、F# 項目テンプレートの一部を示しています。The following image shows some of the F# item templates:

Visual Studio の F# 項目テンプレート

データ アクセスの項目テンプレートの詳細については、F# 型プロバイダーに関するページを参照してください。For more information about the item templates for data access, see F# type providers.

次の表は、F# のプロジェクト プロパティの機能を要約したものです。The following table summarizes features in project properties for F#:

プロジェクトの設定Project setting F# でのサポートSupported in F#? メモNotes
リソース ファイルResource files はいYes
ビルド、デバッグ、および参照の設定Build, debug, and reference settings はいYes
マルチ ターゲットMultitargeting はいYes
アイコンとマニフェストIcon and manifest いいえNo コンパイラ コマンドライン オプションを通じて使用できます。Available through compiler command-line options.
ASP.NET クライアント サービスASP.NET Client Services いいえNo
ClickOnceClickOnce いいえNo 別の .NET 言語 (該当する場合) でクライアント プロジェクトを使用します。Use a client project in another .NET language, if applicable.
厳密な名前付けStrong naming いいえNo コンパイラ コマンドライン オプションを通じて使用できます。Available through compiler command-line options.
アセンブリの発行とバージョン管理Assembly publishing and versioning いいえNo
コード分析Code analysis いいえNo コード分析ツールは、手動で、またはビルド後コマンドの一部として実行することができます。Code analysis tools can be run manually or as part of a post-build command.
セキュリティ (信頼レベルの変更)Security (change trust levels) いいえNo

プロジェクト デザイナーProject Designer

プロジェクト デザイナー は、関連機能でグループ化された複数のプロジェクト プロパティ ページで構成されます。Project Designer consists of several project property pages grouped by related functionality. F# プロジェクトで使用できるページは、ほとんどの場合、他の言語で使用できるページのサブセットです。これについては、以下の表で説明します。The pages available for F# projects are mostly a subset of those available for other languages, and are described in the following table. 対応する C# プロジェクト デザイナー ページへのリンクが提供されています。Links are provided to the corresponding C# Project Designer page.

プロジェクト デザイナー ページProject Designer page 関連リンクRelated links 説明Description
アプリケーションApplication [アプリケーション] ページ (プロジェクト デザイナー)Application Page, Project Designer アプリケーション レベルの設定とプロパティを指定することができます。たとえば、ライブラリと実行可能ファイルのどちらを作成するのか、アプリケーションのターゲットとなるのはどのバージョンの .NET か、アプリケーションで使用されるリソース ファイルはどこに格納されるのかなどです。Enables you to specify application-level settings and properties, such as whether you are creating a library or an executable file, what version of .NET the application targets, and information about where the resource files that the application uses are stored.
ビルドBuild プロジェクト デザイナーの [ビルド] ページBuild Page, Project Designer コードのコンパイル方法を制御できます。Enables you to control how the code is compiled.
ビルド イベントBuild Events [ビルド イベント] ページ (プロジェクト デザイナー)Build Events Page, Project Designer コンパイルの前または後に実行するコマンドを指定できます。Enables you to specify commands to run before or after a compilation.
デバッグDebug [デバッグ] ページ (プロジェクト デザイナー)Debug Page, Project Designer デバッグ中のアプリケーションの実行方法を制御できます。Enables you to control how the application runs during debugging. これには、使用するコマンドとアプリケーションの開始ディレクトリ、ネイティブ コードや SQL などの有効にする特別なデバッグ モードが含まれます。This includes what commands to use and what your application's starting directory is, and any special debugging modes you want to enable, such as native code and SQL.
パッケージ (.NET SDK のみ)Package (.NET SDK only) N/AN/A NuGet パッケージとして発行するときに、NuGet パッケージのメタデータを定義できます。Enables you to define NuGet Package metadata when publishing as a NuGet package.
参照パスReference Paths プロジェクト内の参照の管理Manage references in a project コードが依存するアセンブリを検索する場所を指定できます。Enables you to specify where to search for assemblies that the code depends on.
リソース (.NET SDK のみ)Resources (.NET SDK only) N/AN/A 既定のリソース ファイルを生成して管理することができます。Enables you to generate and manage a default resources file.

F# 固有の設定F#-specific settings

次の表は、F# に固有の設定を要約したものです。The following table summarizes settings that are specific to F#:

プロジェクト デザイナー ページProject Designer page 設定Setting 説明Description
ビルドBuild 末尾呼び出しの生成Generate tail calls 選択した場合、末尾の Microsoft Intermediate Language (MSIL) 命令の使用が有効になります。If selected, enables the use of the tail Microsoft Intermediate Language (MSIL) instruction. これにより、スタック フレームが末尾再帰関数で再利用されます。This causes the stack frame to be reused for tail recursive functions. --tailcalls コンパイラ オプションと同等のものです。Equivalent to the --tailcalls compiler option.
ビルドBuild その他のフラグOther flags 追加のコンパイラ コマンドライン オプションを指定することができます。Allows you to specify additional compiler command-line options.

コード エディターとテキスト エディターの機能Code and text editor features

F# では、Visual Studio のコード エディターとテキスト エディターの次の機能がサポートされています。The following features of the Visual Studio code and text editors are supported in F#:

機能Feature 説明Description F# でのサポートSupported in F#?
自動コメントAutomatically comment コード セクションのコメントを作成または解除できます。Enables you to comment or uncomment sections of code. はいYes
オート フォーマットAutomatically format 標準的なインデントとスタイルを使用してコードを再フォーマットします。Reformats code with standard indentation and style. いいえNo
ブックマークBookmarks エディターで場所を保存できます。Enables you to save places in the editor. はいYes
インデントの変更Change indentation 選択行のインデントを設定または解除します。Indents or unindents selected lines. はいYes
スマート インデントSmart indentation F# スコープ規則に従って、自動的にカーソルのインデントを設定および設定解除します。Automatically indents and de-indents the cursor according to F# scoping rules. はいYes
テキストの検索と置換Find and replace text ファイル、プロジェクト、またはソリューションで検索し、場合によってはテキストを変更できます。Enables you to search in a file, project, or solution, and potentially change text. はいYes
.NET API の定義に移動するGo to definition for the .NET API .NET API にカーソルがある場合は、.NET メタデータから生成されたコードが表示されます。When the cursor is positioned on a .NET API, shows code generated from .NET metadata. いいえNo
ユーザー定義 API の定義へ移動Go to definition for user-defined API 定義したプログラム エンティティにカーソルがある場合は、エンティティが定義されているコード内の場所にカーソルを移動します。When the cursor is on a program entity that you defined, moves the cursor to the location in your code where the entity is defined. はいYes
[指定行へのジャンプ]Go To Line 行番号を指定して、ファイル内の特定の行に移動できます。Enables you to go to a specific line in a file, by line number. はいYes
ファイルの上部にあるナビゲーション バーNavigation bars at top of file 関数名などを使用して、コード内の場所に移動できます。Enables you to jump to locations in code, by, For example, function name. はいYes
ブロック構造のガイドラインBlock Structure Guidelines F# スコープを示すガイドラインが表示されます。カーソルを置けば、プレビューを表示できます。Shows guidelines that indicate F# scopes, which can be hovered over for a preview. はいYes
アウトラインOutlining コードのセクションを折りたたみ、よりコンパクトなビューを作成できます。Enables you to collapse sections of your code to create a more compact view. はいYes
タブにするTabify スペースをタブに変換します。Converts spaces to tabs. はいYes
型の色づけType colorization 定義された型名を特別な色で表示します。Shows defined type names in a special color. はいYes
クイック検索。Quick Find. クイック検索、[検索と置換] ウィンドウに関する記述を参照してください。See Quick Find, Find and Replace Window. ファイルまたはプロジェクトで検索できます。Enables you to search in a file or project. はいYes
Ctrl キーを押しながら クリック して [定義へ移動]Ctrl+click to Go to Definition Ctrl キーを押しながら F# シンボルをクリックして、[定義へ移動] を呼び出すことができます。Allows you to hold Ctrl and click on an F# symbol to invoke Go to Definition. はいYes
QuickInfo から [定義へ移動]Go to Definition from QuickInfo [定義へ移動] を呼び出す、ツールヒント内のクリック可能なシンボル。Clickable symbols inside tooltips that invoke Go to Definition. はいYes
すべてに移動Go to All Ctrl+T キーを使用して、すべての F# の構成要素に対して、グローバルなあいまい一致ナビゲーションを有効にします。Enables global, fuzzy-matching navigation for all F# constructs via Ctrl+T. はいYes
インラインの名前変更Inline Rename 出現するすべてのシンボル インラインの名前を変更します。Renames all occurrences of a symbol inline. はいYes
すべての参照の検索Find all References コードベースで出現するすべてのシンボルを検索します。Finds all occurrences of a symbol in a codebase. はいYes
名前コード修正の簡素化Simplify Name code fix F# シンボルの不要な修飾子を削除します。Removes unnecessary qualifiers for F# symbols. はいYes
未使用の open ステートメント コード修正の削除Remove unused open statement code fix ドキュメント内の不要な open ステートメントをすべて削除します。Removes all unnecessary open statements in a document. はいYes
未使用値のコード修正Unused value code fix 未使用の識別子の名前をアンダースコアに変更するよう提案します。Suggests renaming an unused identifier to underscore. はいYes

Visual Studio でのコード編集に関する一般的な情報と、テキスト エディターの機能については、「エディターでのコードの作成」を参照してください。For general information about editing code in Visual Studio, and features of the text editor, see Write code in the editor.

IntelliSense 機能IntelliSense features

次の表は、F# でサポートされている IntelliSense の機能とサポートされていない機能を要約したものです。The following table summarizes IntelliSense features supported and not supported in F#:

機能Feature 説明Description F# でのサポートSupported in F#?
インターフェイスの自動実装Automatically implement interfaces インターフェイス メソッドのコード スタブを生成します。Generates code stubs for interface methods. はいYes
コード スニペットCode snippets 一般的なコーディング構成要素のライブラリからトピックにコードを挿入します。Injects code from a library of common coding constructs into topics. いいえNo
入力候補Complete Word 入力時に単語や名前の入力候補を提示して、入力の手間を省きます。Saves typing by completing words and names as you type. はいYes
自動補完Automatic completion 有効にすると、ユーザーが候補のいずれかを選ぶか、Ctrl+Space キーを押すまで待たずに、入力時に最初に一致したものが単語補完で選択されます。When enabled, causes the word completion to select the first match as you type, instead of waiting for you to select one or press Ctrl+Space. はいYes
開かれていない名前空間内のシンボル補完の提案Offer completion for symbols in unopened namespaces 自動補完では、開かれていない名前空間にある一致するシンボルが提示され、選択時に対応する open ステートメントでの補完が提案されます。With automatic completion, a matching symbol that resides in an unopened namespace is suggested, offering to complete with the corresponding open statement when selected. はいYes
コード要素の生成Generate code elements さまざまな構成要素のスタブ コードを生成できます。Enables you to generate stub code for a variety of constructs. いいえNo
リスト メンバーList Members メンバー アクセス演算子 (.) を入力すると、型のメンバーが示されます。When you type the member access operator (.), shows members for a type. はいYes
using/open の整理Organize Usings/Open C# の using ステートメントや F# の open ディレクティブで参照される名前空間を整理します。Organizes namespaces referenced by using statements in C# or open directives in F#. いいえNo
パラメーター ヒントParameter Info 関数呼び出しの入力時に、パラメーターに関する役立つ情報が表示されます。Shows helpful information about parameters as you type a function call. はいYes
クイック ヒントQuick Info コード内の識別子の宣言全体が表示されます。Displays the complete declaration for any identifier in your code. はいYes
自動かっこ挿入Automatic brace completion トランザクション的な方法で F# の中かっこのような構文の構成要素を自動的に補完します。Automatically completes F# brace-like syntax constructs in a transactional manner. はいYes

IntelliSense の一般的な情報については、IntelliSense の使用に関するページを参照してください。For general information about IntelliSense, see Use IntelliSense.

デバッグ機能Debugging features

次の表は、F# コードのデバッグ時に使用できる機能を要約したものです。The following table summarizes features that are available when you debug F# code:

機能Feature 説明Description F# でのサポートSupported in F#?
[自動変数] ウィンドウAutos window 自動変数または一時変数を表示します。Shows automatic or temporary variables. いいえNo
ブレークポイントBreakpoints デバッグ中に特定の箇所でコードの実行を一時停止できます。Enables you to pause code execution at specific points during debugging. はいYes
条件付きブレークポイントConditional breakpoints 実行を一時停止するかどうかを決定する条件をテストするブレークポイントを有効にします。Enables breakpoints that test a condition that determines whether execution should pause. はいYes
エディット コンティニュEdit and Continue 実行中のプログラムをデバッグするときに、デバッガーを停止したり再起動したりせずにコードを変更したりコンパイルしたりできます。Enables code to be modified and compiled as you debug a running program without stopping and restarting the debugger. いいえNo
式エバリュエーターExpression evaluator 実行時にコードを評価して実行します。Evaluates and executes code at run time. いいえ。ただし、C# 構文を使用する必要はありますが、C# 式エバリュエーターを使用することはできます。No, but the C# expression evaluator can be used, although you must use C# syntax.
デバッグ履歴Historical debugging 以前に実行されたコードにステップ インできます。Enables you to step into previously executed code. はいYes
[ローカル] ウィンドウLocals window ローカルで定義されている値と変数を表示します。Shows locally defined values and variables. はいYes
カーソル行の前まで実行Run To Cursor カーソルがある行に達するまで、コードを実行できます。Enables you to execute code until the line that contains the cursor is reached. はいYes
[ステップ イン]Step Into 実行を進めて、関数呼び出しに移動できます。Enables you to advance execution and move into any function call. はいYes
[ステップ オーバー]Step Over 現在のスタック フレームで実行を進め、関数呼び出しを超えて移動できます。Enables you to advance execution in the current stack frame and move past any function call. はいYes

Visual Studio デバッガーの一般的な情報について、「Visual Studio でのデバッグ」を参照してください。For general information about the Visual Studio debugger, see Debugging in Visual Studio.

その他のツールAdditional tools

次の表は、Visual Studio ツールでの F# のサポートを要約したものです。The following table summarizes the support for F# in Visual Studio tools.

ツールTool 説明Description F# でのサポートSupported in F#?
呼び出し階層Call Hierarchy コード内の関数呼び出しの入れ子構造を表示します。Displays the nested structure of function calls in your code. いいえNo
コード メトリックスCode Metrics 行数など、コードに関する情報を収集します。Gathers information about your code, such as line counts. いいえNo
クラス ビューClass View プロジェクト内のコードの型ベース ビューを提供します。Provides a type-based view of the code in a project. いいえNo
[エラー一覧] ウィンドウError List window コードのエラーの一覧を表示します。Shows a list of errors in code. はいYes
F# InteractiveF# Interactive プロジェクトのビルドに関係なく、F# コードを入力して (またはコピーして貼り付け)、すぐに実行できます。Enables you to type (or copy and paste) F# code and run it immediately, independently of the building of your project. [F# インタラクティブ] ウィンドウは REPL (read–eval–print loop) です。The F# Interactive window is a Read, Evaluate, Print Loop (REPL). はいYes
オブジェクト ブラウザーObject Browser アセンブリで型を表示できます。Enables you to view the types in an assembly. コンパイル済みアセンブリに表示される F# 型は、作成したとおりには表示されません。F# types as they appear in compiled assemblies do not appear exactly as you author them. F# 型のコンパイル済み表現を参照できますが、F# で示されるように型を表示することはできません。You can browse through the compiled representation of F# types, but you cannot view the types as they appear from F#.
[出力] ウィンドウOutput window ビルド出力を表示します。Displays build output. はいYes
パフォーマンス分析Performance analysis コードのパフォーマンスを測定するためのツールを提供します。Provides tools for measuring the performance of your code. はいYes
[プロパティ] ウィンドウProperties window フォーカスがある開発環境のオブジェクトのプロパティを表示して、編集することができます。Displays and enables editing of properties of the object in the development environment that has focus. はいYes
サーバー エクスプローラーServer Explorer さまざまなサーバー リソースと対話する方法を提供します。Provides ways to interact with a variety of server resources. はいYes
ソリューション エクスプローラーSolution Explorer プロジェクトとファイルを表示および管理できます。Enables you to view and manage projects and files. はいYes
タスク一覧Task List コードに関連する作業項目を管理できます。Enables you to manage work items pertaining to your code. いいえNo
テスト プロジェクトTest projects コードをテストする際に役立つ機能を提供します。Provides features that help you test your code. いいえNo
ツールボックスToolbox コントロールや、テキストまたはコードのセクションなど、ドラッグ可能なオブジェクトを含むタブが表示されます。Displays tabs that contain draggable objects such as controls and sections of text or code. はいYes

関連項目See also