F# Development Environment Features

This topic includes information about which features of Visual Studio 2010 are supported in F#.

Project Features

The following table summarizes the templates that are available for use in F# projects. For information about project and item templates, see Visual Studio Templates.

Template type

Description

Supported templates

Project templates

Types of projects available in the New Project dialog box.

  • Application

  • Library

  • Silverlight library

Item templates

File types available in the Add New Item dialog box.

  • F# source file (.fs)

  • F# script (.fsx)

  • F# signature file (.fsi)

  • XML file (.xml)

  • Text file

  • Configuration file (.config)

The following table summarizes project-properties features supported and not supported in F#. For more information, see Configuring Projects (F#) and Managing Project Properties with the Project Designer.

Project setting

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 Client Services

No

 

ClickOnce

No

Use a client project in another .NET Framework language, if applicable, or a Setup Project. For more information about Setup Projects, see Setup and Deployment Projects.

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

 

Code and Text Editor Features

The following features of the Visual Studio code and text editors are supported in F#. For general information about editing code in Visual Studio, and features of the text editor, see Code and Text Editor.

Feature

Description

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

Finding and Replacing

Enables you to search in a file, project, or solution, and potentially change text.

Yes

Go to definition for .NET Framework API

When the cursor is positioned on a .NET Framework API, shows code generated from .NET Framework metadata.

No

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.

No

Outlining. See How to: Outline and Hide Code.

Enables you to collapse sections of your code to create a more compact view.

No

Tabify

Converts spaces to tabs.

Yes

Type colorization

Shows defined type names in a special color.

No

Quick Find. See Quick Find, Find and Replace Window.

Enables you to search in a file or project.

Yes, but only to find F# files, not to search within files

IntelliSense Features

The following table summarizes IntelliSense features supported and not supported in F#. For general information about IntelliSense, see Coding Aids.

Feature

Description

Supported in F#?

Automatically implement interfaces

Generates code stubs for interface methods.

No

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

Consume-first completion mode

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.

No

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

Organize Usings/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, but does not highlight the current parameter as you type.

Quick Info

Displays the complete declaration for any identifier in your code.

Yes

Refactoring of F# code is not supported in Visual Studio 2010.

Debugging Features

The following table summarizes features that are available when you debug F# code. For general information about the Visual Studio debugger, see Debugging in Visual Studio.

Feature

Description

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.

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

Additional Tools

The following table summarizes the support for F# in Visual Studio tools.

Tool

Description

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# Interactive (fsi.exe) Reference

Enables you to type (or copy and paste) F# code and run it immediately, independently of the building of your project. The F# Interactive window is a Read, Evaluate, Print Loop (REPL).

Yes

Object Browser

Enables you to view the types in an assembly.

F# types as they appear in compiled assemblies do not appear exactly as you author them. 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/Database 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.

Yes

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

Concepts

Configuring Projects (F#)

Other Resources

Using Visual Studio to Write F# Programs