Desenvolver com o Visual F# no Visual StudioDevelop with Visual F# in Visual Studio

Este artigo inclui informações sobre os recursos do Visual Studio para o desenvolvimento do F#.This article includes information about Visual Studio features for F# development.

Instalar o suporte do F#Install F# support

Para desenvolver com o F# no Visual Studio, primeiro instale a carga de trabalho desenvolvimento para desktop do .NET, caso ainda não tenha feito isso.To develop with F# in Visual Studio, first install the .NET desktop development workload if you haven't already. Você instala cargas de trabalho do Visual Studio por meio do instalador do Visual Studio, que pode ser aberto selecionando ferramentas > obter ferramentas e recursos.You install Visual Studio workloads through Visual Studio Installer, which you can open by selecting Tools > Get Tools and Features.

Carga de trabalho de desenvolvimento para desktop do .NET no Visual Studio

Recursos de projeto do F#F# project features

Vários modelos de projeto e de item estão disponíveis para o F# no Visual Studio.Various project and item templates are available for F# in Visual Studio. A seguinte imagem mostra alguns dos modelos de projeto do F# para o .NET Core e o .NET Standard:The following image shows some of the F# project templates for .NET Core and .NET Standard:

Modelos de projeto do F# no Visual Studio

A seguinte imagem mostra alguns dos modelos de item do F#:The following image shows some of the F# item templates:

Modelos de item do F# no Visual Studio

Para obter mais informações sobre os modelos de item para acesso a dados, confira Provedores de tipos F#.For more information about the item templates for data access, see F# type providers.

A seguinte tabela resume os recursos nas propriedades do projeto para o F#:The following table summarizes features in project properties for F#:

Configuração do projetoProject setting Compatível com o F#?Supported in F#? ObservaçõesNotes
Arquivos de recursoResource files SimYes
Configurações de build, depuração e referênciaBuild, debug, and reference settings SimYes
MultiplataformaMultitargeting SimYes
Ícone e manifestoIcon and manifest NãoNo Disponível por meio das opções da linha de comando do compilador.Available through compiler command-line options.
Serviços de Cliente ASP.NETASP.NET Client Services NãoNo
ClickOnceClickOnce NãoNo Use um projeto de cliente em outra linguagem .NET, se aplicável.Use a client project in another .NET language, if applicable.
Nomenclatura forteStrong naming NãoNo Disponível por meio das opções da linha de comando do compilador.Available through compiler command-line options.
Publicação e controle de versão de assemblyAssembly publishing and versioning NãoNo
Análise de códigoCode analysis NãoNo As ferramentas de análise de código podem ser executadas manualmente ou como parte de um comando pós-build.Code analysis tools can be run manually or as part of a post-build command.
Segurança (alterar níveis de confiança)Security (change trust levels) NãoNo

Designer de ProjetoProject Designer

O Designer de Projeto consiste no agrupamento de várias páginas de propriedades do projeto por funcionalidade relacionada.Project Designer consists of several project property pages grouped by related functionality. As páginas disponíveis para projetos do F# são, principalmente, um subconjunto daquelas disponíveis para outras linguagens e são descritas na tabela a seguir.The pages available for F# projects are mostly a subset of those available for other languages, and are described in the following table. Links são fornecidos para a página correspondente do Designer de Projeto do C#.Links are provided to the corresponding C# Project Designer page.

Página do Designer de ProjetoProject Designer page Links relacionadosRelated links DescriçãoDescription
AplicativoApplication Página Aplicativo, Designer de ProjetoApplication Page, Project Designer Permite que você especifique configurações e propriedades no nível do aplicativo, como se estivesse criando uma biblioteca ou um arquivo executável, qual é a versão de destino do .NET para o aplicativo e informações sobre o local de armazenamento dos arquivos de recurso usados pelo aplicativo.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.
CompilaçãoBuild Página de build, Designer de ProjetoBuild Page, Project Designer Permite que você controle como o código é compilado.Enables you to control how the code is compiled.
Eventos de compilaçãoBuild Events Página Eventos de Build, Designer de ProjetoBuild Events Page, Project Designer Permite que você especifique os comandos a serem executados antes ou depois de uma compilação.Enables you to specify commands to run before or after a compilation.
DepurarDebug Página de Depuração, Designer de ProjetoDebug Page, Project Designer Permite que você controle como o aplicativo é executado durante a depuração.Enables you to control how the application runs during debugging. Isso inclui os comandos a serem usados e o diretório inicial do aplicativo, bem como os modos de depuração especiais que você deseja habilitar, como o código nativo e o 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.
Pacote (somente SDK do .NET)Package (.NET SDK only) N/DN/A Permite que você defina metadados do Pacote NuGet durante a publicação como um pacote NuGet.Enables you to define NuGet Package metadata when publishing as a NuGet package.
Caminhos de ReferênciaReference Paths Gerenciar referências em um projetoManage references in a project Permite que você especifique o local em que pesquisar assemblies dos quais o código depende.Enables you to specify where to search for assemblies that the code depends on.
Recursos (somente SDK do .NET)Resources (.NET SDK only) N/DN/A Permite que você gere e gerencie um arquivo de recurso padrão.Enables you to generate and manage a default resources file.

Configurações específicas do F#F#-specific settings

A seguinte tabela resume as configurações específicas do F#:The following table summarizes settings that are specific to F#:

Página do Designer de ProjetoProject Designer page ConfiguraçãoSetting DescriçãoDescription
CompilaçãoBuild Gerar chamadas da parte finalGenerate tail calls Se ela estiver selecionada, habilitará o uso da instrução MSIL (Microsoft Intermediate Language) da parte final.If selected, enables the use of the tail Microsoft Intermediate Language (MSIL) instruction. Isso faz com que o registro de ativação seja reutilizado para funções recursivas da parte final.This causes the stack frame to be reused for tail recursive functions. Equivalente à opção do compilador --tailcalls.Equivalent to the --tailcalls compiler option.
CompilaçãoBuild Outros sinalizadoresOther flags Permite que você especifique opções adicionais de linha de comando do compilador.Allows you to specify additional compiler command-line options.

Recursos do editor de código e textoCode and text editor features

Há suporte para os seguintes recursos dos editores de código e de texto do Visual Studio no F#:The following features of the Visual Studio code and text editors are supported in F#:

RecursoFeature DescriçãoDescription Compatível com o F#?Supported in F#?
Comentar automaticamenteAutomatically comment Permite que você comente ou remova a marca de comentário das seções de código.Enables you to comment or uncomment sections of code. SimYes
Formatar automaticamenteAutomatically format Reformata o código com recuo e estilo padrão.Reformats code with standard indentation and style. NãoNo
IndicadoresBookmarks Permite que você salve locais no editor.Enables you to save places in the editor. SimYes
Alterar recuoChange indentation Recua ou desfaz o recuo das linhas selecionadas.Indents or unindents selected lines. SimYes
Recuo inteligenteSmart indentation Recua e desfaz o recuo do cursor automaticamente, de acordo com as regras de escopo do F#.Automatically indents and de-indents the cursor according to F# scoping rules. SimYes
Localizar e substituir textoFind and replace text Permite que você faça pesquisas em um arquivo, um projeto ou uma solução e, potencialmente, altere o texto.Enables you to search in a file, project, or solution, and potentially change text. SimYes
Ir para definição da API .NETGo to definition for the .NET API Quando o cursor estiver posicionado em uma API .NET, essa configuração mostrará o código gerado com base nos metadados .NET.When the cursor is positioned on a .NET API, shows code generated from .NET metadata. NãoNo
Ir para definição de API definida pelo usuárioGo to definition for user-defined API Quando o cursor estiver em uma entidade de programa definida, essa configuração moverá o cursor para o local no código em que a entidade foi definida.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. SimYes
Ir para a linhaGo To Line Permite que você vá para uma linha específica em um arquivo, por número de linha.Enables you to go to a specific line in a file, by line number. SimYes
Barras de navegação na parte superior do arquivoNavigation bars at top of file Permite que você vá para locais no código, por exemplo, por nome da função.Enables you to jump to locations in code, by, For example, function name. SimYes
Diretrizes de estrutura de blocoBlock Structure Guidelines Mostra as diretrizes que indicam os escopos do F#, que podem ser focalizados para obter uma versão prévia.Shows guidelines that indicate F# scopes, which can be hovered over for a preview. SimYes
Estrutura de tópicosOutlining Permite que você recolha as seções do código para criar uma exibição mais compacta.Enables you to collapse sections of your code to create a more compact view. SimYes
TabularTabify Converte espaços em tabulações.Converts spaces to tabs. SimYes
Colorização de tipoType colorization Mostra os nomes de tipo definidos em uma cor especial.Shows defined type names in a special color. SimYes
Localização Rápida.Quick Find. Confira Localização Rápida, Janela Localizar e Substituir.See Quick Find, Find and Replace Window. Permite que você faça pesquisas em um arquivo ou um projeto.Enables you to search in a file or project. SimYes
Ctrl + clique para ir para a definiçãoCtrl+click to Go to Definition Permite que você mantenha a tecla Ctrl pressionada e clique em um símbolo do F# para invocar a opção Ir para Definição.Allows you to hold Ctrl and click on an F# symbol to invoke Go to Definition. SimYes
Ir para definição de QuickInfoGo to Definition from QuickInfo Símbolos clicáveis dentro das dicas de ferramenta que invocam a opção Ir para Definição.Clickable symbols inside tooltips that invoke Go to Definition. SimYes
Ir para TodosGo to All Permite a navegação global e de correspondência difusa para todas as construções de F # por meio de Ctrl + T.Enables global, fuzzy-matching navigation for all F# constructs via Ctrl+T. SimYes
Renomeação embutidaInline Rename Renomeia todas as ocorrências de um símbolo embutido.Renames all occurrences of a symbol inline. SimYes
Localizar todas as ReferênciasFind all References Localiza todas as ocorrências de um símbolo em uma base de código.Finds all occurrences of a symbol in a codebase. SimYes
Simplificar a correção de código do nomeSimplify Name code fix Remove os qualificadores desnecessários para símbolos do F#.Removes unnecessary qualifiers for F# symbols. SimYes
Remover correção de código de instrução open não utilizadaRemove unused open statement code fix Remove todas as instruções open desnecessárias de um documento.Removes all unnecessary open statements in a document. SimYes
Correção de código do valor não utilizadaUnused value code fix Sugere a renomeação de um identificador não utilizado para sublinhado.Suggests renaming an unused identifier to underscore. SimYes

Para obter informações gerais sobre como editar o código no Visual Studio, bem como os recursos do editor de texto, confira Escrever o código no editor.For general information about editing code in Visual Studio, and features of the text editor, see Write code in the editor.

Recursos do IntelliSenseIntelliSense features

A seguinte tabela resume os recursos do IntelliSense compatíveis e não compatíveis com o F#:The following table summarizes IntelliSense features supported and not supported in F#:

RecursoFeature DescriçãoDescription Compatível com o F#?Supported in F#?
Implementar interfaces automaticamenteAutomatically implement interfaces Gera os stubs de código para os métodos de interface.Generates code stubs for interface methods. SimYes
Snippets de códigoCode snippets Injeta o código de uma biblioteca de constructos de codificação comuns em tópicos.Injects code from a library of common coding constructs into topics. NãoNo
Completar PalavraComplete Word Economiza tempo de digitação preenchendo palavras e nomes conforme você digita.Saves typing by completing words and names as you type. SimYes
Conclusão automáticaAutomatic completion Quando habilitado, faz com que a palavra seja selecionada para selecionar a primeira correspondência conforme você digita, em vez de esperar que você selecione um ou pressione Ctrl + espaço.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. SimYes
Oferecer preenchimento para símbolos em namespaces não abertosOffer completion for symbols in unopened namespaces Com o preenchimento automático, um símbolo correspondente que reside em um namespace não aberto é sugerido, oferecendo o preenchimento com a instrução open correspondente, quando selecionado.With automatic completion, a matching symbol that resides in an unopened namespace is suggested, offering to complete with the corresponding open statement when selected. SimYes
Gerar elementos de códigoGenerate code elements Permite que você gere o código de stub para uma variedade de constructos.Enables you to generate stub code for a variety of constructs. NãoNo
Listar MembrosList Members Quando você digita o operador de acesso de membro (.), essa opção mostra os membros de um tipo.When you type the member access operator (.), shows members for a type. SimYes
Organizar usings/openOrganize Usings/Open Organiza os namespaces referenciados por instruções using no C# ou diretivas open no F#.Organizes namespaces referenced by using statements in C# or open directives in F#. NãoNo
Informações de ParâmetroParameter Info Mostra informações úteis sobre os parâmetros conforme você digita uma chamada de função.Shows helpful information about parameters as you type a function call. SimYes
Informação RápidaQuick Info Exibe a declaração completa de um identificador no código.Displays the complete declaration for any identifier in your code. SimYes
Preenchimento automático de chavesAutomatic brace completion Preenche automaticamente constructos de sintaxe semelhantes à chave do F# de maneira transacional.Automatically completes F# brace-like syntax constructs in a transactional manner. SimYes

Para obter informações gerais sobre o IntelliSense, confira Usar o IntelliSense.For general information about IntelliSense, see Use IntelliSense.

Recursos de depuraçãoDebugging features

A seguinte tabela resume os recursos disponíveis ao depurar o código F#:The following table summarizes features that are available when you debug F# code:

RecursoFeature DescriçãoDescription Compatível com o F#?Supported in F#?
Janela AutosAutos window Mostra variáveis automáticas ou temporárias.Shows automatic or temporary variables. NãoNo
Pontos de interrupçãoBreakpoints Permite que você pause a execução de código em pontos específicos durante a depuração.Enables you to pause code execution at specific points during debugging. SimYes
Pontos de interrupção condicionaisConditional breakpoints Permite pontos de interrupção que testam uma condição que determina se a execução deve ser colocada em pausa.Enables breakpoints that test a condition that determines whether execution should pause. SimYes
Editar e continuarEdit and Continue Permite que o código seja modificado e compilado durante a depuração de um programa em execução sem interromper e reiniciar o depurador.Enables code to be modified and compiled as you debug a running program without stopping and restarting the debugger. NãoNo
Avaliador de expressãoExpression evaluator Avalia e executa o código em tempo de execução.Evaluates and executes code at run time. Não, mas o avaliador de expressão C# pode ser usado, embora seja necessário usar a sintaxe C#.No, but the C# expression evaluator can be used, although you must use C# syntax.
Depuração de históricoHistorical debugging Permite que você intervenha no código executado anteriormente.Enables you to step into previously executed code. SimYes
Janela LocaisLocals window Mostra as variáveis e os valores definidos localmente.Shows locally defined values and variables. SimYes
Executar até o cursorRun To Cursor Permite que você execute o código até que a linha que contém o cursor seja atingida.Enables you to execute code until the line that contains the cursor is reached. SimYes
Depuração CompletaStep Into Permite que você avance a execução e passe para qualquer chamada de função.Enables you to advance execution and move into any function call. SimYes
Depuração ParcialStep Over Permite que você avance a execução no registro de ativação atual e passe por qualquer chamada de função.Enables you to advance execution in the current stack frame and move past any function call. SimYes

Para obter informações gerais sobre o depurador do Visual Studio, confira Depuração no Visual Studio.For general information about the Visual Studio debugger, see Debugging in Visual Studio.

Ferramentas adicionaisAdditional tools

A tabela a seguir resume o suporte para o F# nas ferramentas do Visual Studio.The following table summarizes the support for F# in Visual Studio tools.

FerramentaTool DescriçãoDescription Compatível com o F#?Supported in F#?
Hierarquia de chamadasCall Hierarchy Exibe a estrutura aninhada das chamadas de função no código.Displays the nested structure of function calls in your code. NãoNo
Métricas de códigoCode Metrics Coleta informações sobre o código, como contagens de linha.Gathers information about your code, such as line counts. NãoNo
Exibição de ClasseClass View Fornece uma exibição baseada em tipo do código em um projeto.Provides a type-based view of the code in a project. NãoNo
Janela Lista de ErrosError List window Mostra uma lista de erros no código.Shows a list of errors in code. SimYes
F# InterativoF# Interactive Permite que você digite (ou copie e cole) o código F# e execute-o imediatamente, seja qual for o build do projeto.Enables you to type (or copy and paste) F# code and run it immediately, independently of the building of your project. A janela do F# Interativo é um REPL (Loop Ler, Avaliar, Imprimir).The F# Interactive window is a Read, Evaluate, Print Loop (REPL). SimYes
Pesquisador de ObjetosObject Browser Permite que você veja os tipos em um assembly.Enables you to view the types in an assembly. Os tipos F# exibidos em assemblies compilados não são exibidos exatamente como são criados.F# types as they appear in compiled assemblies do not appear exactly as you author them. Você pode percorrer a representação compilada de tipos F#, mas não pode exibir os tipos como são exibidos no F#.You can browse through the compiled representation of F# types, but you cannot view the types as they appear from F#.
janela SaídaOutput window Exibe a saída de build.Displays build output. SimYes
Análise de desempenhoPerformance analysis Fornece ferramentas para avaliar o desempenho do código.Provides tools for measuring the performance of your code. SimYes
Janela de PropriedadesProperties window Exibe e permite a edição das propriedades do objeto no ambiente de desenvolvimento que tem o foco.Displays and enables editing of properties of the object in the development environment that has focus. SimYes
Gerenciador de ServidoresServer Explorer Fornece maneiras de interagir com uma variedade de recursos do servidor.Provides ways to interact with a variety of server resources. SimYes
Gerenciador de SoluçõesSolution Explorer Permite que você veja e gerencie projetos e arquivos.Enables you to view and manage projects and files. SimYes
Lista de TarefasTask List Permite que você gerencie itens de trabalho pertencentes ao código.Enables you to manage work items pertaining to your code. NãoNo
Projetos de testeTest projects Fornece recursos que ajudam você a testar o código.Provides features that help you test your code. NãoNo
Caixa de FerramentasToolbox Exibe as guias que contêm objetos arrastáveis como controles e seções de texto ou de código.Displays tabs that contain draggable objects such as controls and sections of text or code. SimYes

Confira tambémSee also