Desenvolver com o Visual F# no Visual Studio

Este artigo inclui informações sobre os recursos do Visual Studio para o desenvolvimento do F#.

Instalar o suporte do F#

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. Instale as cargas de trabalho do Visual Studio por meio do Instalador do Visual Studio, que pode ser aberto pela seleção de Ferramentas>Obter Ferramentas e Recursos.

.NET desktop development workload in Visual Studio

Recursos de projeto do F#

Vários modelos de projeto e de item estão disponíveis para o F# no Visual Studio. A seguinte imagem mostra alguns dos modelos de projeto do F# para o .NET Core e o .NET Standard:

F# project templates in Visual Studio

A seguinte imagem mostra alguns dos modelos de item do F#:

F# item templates in Visual Studio

Para obter mais informações sobre os modelos de item para acesso a dados, confira Provedores de tipos F#.

A seguinte tabela resume os recursos nas propriedades do projeto para o F#:

Configuração do projeto Compatível com o F#? Observações
Arquivos de recurso Sim
Configurações de build, depuração e referência Yes
Multiplataforma Sim
Ícone e manifesto Não Disponível por meio das opções da linha de comando do compilador.
Serviços de Cliente ASP.NET Não
ClickOnce Não Use um projeto de cliente em outra linguagem .NET, se aplicável.
Nomenclatura forte Não Disponível por meio das opções da linha de comando do compilador.
Publicação e controle de versão de assembly Não
Análise de código Não As ferramentas de análise de código podem ser executadas manualmente ou como parte de um comando pós-build.
Segurança (alterar níveis de confiança) Não

Designer de Projeto

O Designer de Projeto consiste no agrupamento de várias páginas de propriedades do projeto por funcionalidade relacionada. 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. Links são fornecidos para a página correspondente do Designer de Projeto do C#.

Página do Designer de Projeto Links relacionados Descrição
Aplicativo Página Aplicativo, Designer de Projeto 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.
Build Página de build, Designer de Projeto Permite que você controle como o código é compilado.
Eventos de compilação Página Eventos de Build, Designer de Projeto Permite que você especifique os comandos a serem executados antes ou depois de uma compilação.
Depurar Página de Depuração, Designer de Projeto Permite que você controle como o aplicativo é executado durante a depuração. 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.
Pacote (somente SDK do .NET) N/D Permite que você defina metadados do Pacote NuGet durante a publicação como um pacote NuGet.
Caminhos de Referência Gerenciar referências em um projeto Permite que você especifique o local em que pesquisar assemblies dos quais o código depende.
Recursos (somente SDK do .NET) N/D Permite que você gere e gerencie um arquivo de recurso padrão.

Configurações específicas do F#

A seguinte tabela resume as configurações específicas do F#:

Página do Designer de Projeto Configuração Descrição
Build Gerar chamadas da parte final Se ela estiver selecionada, habilitará o uso da instrução MSIL (Microsoft Intermediate Language) da parte final. Isso faz com que o registro de ativação seja reutilizado para funções recursivas da parte final. Equivalente à opção do compilador --tailcalls.
Build Outros sinalizadores Permite que você especifique opções adicionais de linha de comando do compilador.

Recursos do editor de código e texto

Há suporte para os seguintes recursos dos editores de código e de texto do Visual Studio no F#:

Recurso Descrição Compatível com o F#?
Comentar automaticamente Permite que você comente ou remova a marca de comentário das seções de código. Sim
Formatar automaticamente Reformata o código com recuo e estilo padrão. Não
Indicadores Permite que você salve locais no editor. Sim
Alterar recuo Recua ou desfaz o recuo das linhas selecionadas. Sim
Recuo inteligente Recua e desfaz o recuo do cursor automaticamente, de acordo com as regras de escopo do F#. Sim
Localizar e substituir texto Permite que você faça pesquisas em um arquivo, um projeto ou uma solução e, potencialmente, altere o texto. Sim
Ir para definição da API .NET Quando o cursor estiver posicionado em uma API .NET, essa configuração mostrará o código gerado com base nos metadados .NET. Não
Ir para definição de API definida pelo usuário 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. Sim
Ir para a linha Permite que você vá para uma linha específica em um arquivo, por número de linha. Sim
Barras de navegação na parte superior do arquivo Permite que você vá para locais no código, por exemplo, por nome da função. Sim
Diretrizes de estrutura de bloco Mostra as diretrizes que indicam os escopos do F#, que podem ser focalizados para obter uma versão prévia. Sim
Estrutura de tópicos Permite que você recolha as seções do código para criar uma exibição mais compacta. Sim
Tabular Converte espaços em tabulações. Sim
Colorização de tipo Mostra os nomes de tipo definidos em uma cor especial. Sim
Localização Rápida. Confira Localização Rápida, Janela Localizar e Substituir. Permite que você faça pesquisas em um arquivo ou um projeto. Sim
CTRL+clique para Ir para Definição 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. Sim
Ir para definição de QuickInfo Símbolos clicáveis dentro das dicas de ferramenta que invocam a opção Ir para Definição. Sim
Ir para Todos Permite a navegação global de correspondência difusa para todos os constructos do F# por meio de Ctrl+T. Sim
Renomeação embutida Renomeia todas as ocorrências de um símbolo embutido. Sim
Localizar todas as Referências Localiza todas as ocorrências de um símbolo em uma base de código. Sim
Simplificar a correção de código do nome Remove os qualificadores desnecessários para símbolos do F#. Sim
Remover correção de código de instrução open não utilizada Remove todas as instruções open desnecessárias de um documento. Sim
Correção de código do valor não utilizada Sugere a renomeação de um identificador não utilizado para sublinhado. Sim

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.

Recursos do IntelliSense

A seguinte tabela resume os recursos do IntelliSense compatíveis e não compatíveis com o F#:

Recurso Descrição Compatível com o F#?
Implementar interfaces automaticamente Gera os stubs de código para os métodos de interface. Sim
Snippets de código Injeta o código de uma biblioteca de constructos de codificação comuns em tópicos. Não
Completar Palavra Economiza tempo de digitação preenchendo palavras e nomes conforme você digita. Sim
Conclusão automática Quando essa opção está habilitada, faz com que o preenchimento de palavras selecione a primeira correspondência conforme você digita, em vez de esperar que você selecione uma opção ou pressione Ctrl+Espaço. Sim
Oferecer preenchimento para símbolos em namespaces não abertos 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. Sim
Gerar elementos de código Permite que você gere o código de stub para uma variedade de constructos. Não
Listar Membros Quando você digita o operador de acesso de membro (.), essa opção mostra os membros de um tipo. Sim
Organizar usings/open Organiza os namespaces referenciados por instruções using no C# ou diretivas open no F#. Não
Informações de Parâmetro Mostra informações úteis sobre os parâmetros conforme você digita uma chamada de função. Sim
Informação Rápida Exibe a declaração completa de um identificador no código. Sim
Preenchimento automático de chaves Preenche automaticamente constructos de sintaxe semelhantes à chave do F# de maneira transacional. Sim

Para obter informações gerais sobre o IntelliSense, confira Usar o IntelliSense.

Recursos de depuração

A seguinte tabela resume os recursos disponíveis ao depurar o código F#:

Recurso Descrição Compatível com o F#?
Janela Autos Mostra variáveis automáticas ou temporárias. Não
Pontos de interrupção Permite que você pause a execução de código em pontos específicos durante a depuração. Sim
Pontos de interrupção condicionais Permite pontos de interrupção que testam uma condição que determina se a execução deve ser colocada em pausa. Sim
Editar e continuar 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. Não
Avaliador de expressão Avalia e executa o código em tempo de execução. Não, mas o avaliador de expressão C# pode ser usado, embora seja necessário usar a sintaxe C#.
Depuração de histórico Permite que você intervenha no código executado anteriormente. Sim
Janela Locais Mostra as variáveis e os valores definidos localmente. Sim
Executar até o cursor Permite que você execute o código até que a linha que contém o cursor seja atingida. Sim
Depuração Completa Permite que você avance a execução e passe para qualquer chamada de função. Sim
Depuração Parcial Permite que você avance a execução no registro de ativação atual e passe por qualquer chamada de função. Sim

Para obter informações gerais sobre o depurador do Visual Studio, confira Depuração no Visual Studio.

Ferramentas adicionais

A tabela a seguir resume o suporte para o F# nas ferramentas do Visual Studio.

Ferramenta Descrição Compatível com o F#?
Hierarquia de chamadas Exibe a estrutura aninhada das chamadas de função no código. Não
Métricas de código Coleta informações sobre o código, como contagens de linha. Não
Exibição de Classe Fornece uma exibição baseada em tipo do código em um projeto. Não
Janela Lista de Erros Mostra uma lista de erros no código. Sim
F# Interativo Permite que você digite (ou copie e cole) o código F# e execute-o imediatamente, seja qual for o build do projeto. A janela do F# Interativo é um REPL (Loop Ler, Avaliar, Imprimir). Sim
Pesquisador de Objetos Permite que você veja os tipos em um assembly. Os tipos F# exibidos em assemblies compilados não são exibidos exatamente como são criados. Você pode percorrer a representação compilada de tipos F#, mas não pode exibir os tipos como são exibidos no F#.
janela Saída Exibe a saída de build. Sim
Análise de desempenho Fornece ferramentas para avaliar o desempenho do código. Sim
Janela de Propriedades Exibe e permite a edição das propriedades do objeto no ambiente de desenvolvimento que tem o foco. Sim
Gerenciador de Servidores Fornece maneiras de interagir com uma variedade de recursos do servidor. Sim
Gerenciador de Soluções Permite que você veja e gerencie projetos e arquivos. Sim
Lista de Tarefas Permite que você gerencie itens de trabalho pertencentes ao código. Não
Projetos de teste Fornece recursos que ajudam você a testar o código. Não
Caixa de Ferramentas Exibe as guias que contêm objetos arrastáveis como controles e seções de texto ou de código. Sim

Confira também