Compartilhar via


Configurar a versão da linguagem C#

Aviso

Não é recomendável definir o elemento LangVersion como latest. A configuração latest significa que o compilador instalado usa sua versão mais recente. Isso pode mudar conforme o computador, tornando as compilações não confiáveis. Além disso, ele habilita recursos de linguagem que podem exigir recursos de tempo de execução ou biblioteca não incluídos no SDK atual.

Se precisar especificar sua versão do C# explicitamente, poderá fazer isso de várias maneiras:

Dica

Você pode ver a versão do idioma no Visual Studio na página de propriedades do projeto. Na guia Compilar, o painel Avançado exibe a versão selecionada.

Para saber qual versão da linguagem você está usando no momento, coloque #error version (diferencia maiúsculas de minúsculas) em seu código. Isso torna o relatório do compilador um erro do compilador, CS8304, com uma mensagem contendo a versão do compilador em uso e a versão atual da linguagem selecionada. Confira #erro (Referência C#) para obter mais informações.

Por que você não pode selecionar uma versão diferente do C# no Visual Studio

No Visual Studio, a opção de alterar a versão do idioma por meio da interface do usuário pode ser desabilitada porque a versão padrão está alinhada com a estrutura de destino do projeto (TFM). Essa configuração padrão garante a compatibilidade entre os recursos de linguagem e o suporte de tempo de execução.

Por exemplo, alterar o TFM de destino (por exemplo, de .NET 6 para .NET 9) atualizará a versão do idioma adequadamente, de C# 10 para C# 13. Essa abordagem evita problemas com a compatibilidade de runtime e minimiza erros de build inesperados devido a recursos de linguagem sem suporte.

Se você precisar de uma versão de idioma específica diferente da selecionada automaticamente, consulte os métodos abaixo para substituir as configurações padrão diretamente no arquivo de projeto.

Editar o arquivo de projeto

É possível definir a versão da linguagem em seu arquivo de projeto. Por exemplo, se você quiser explicitamente acesso às versões prévias dos recursos, adicione um elemento como este:

<PropertyGroup>
   <LangVersion>preview</LangVersion>
</PropertyGroup>

O valor preview usa a versão prévia mais recente da linguagem C# compatível com seu compilador.

Configurar vários projetos

Para configurar vários projetos, é possível criar um arquivo Directory.Build.props, normalmente no seu diretório de soluções, que contenha o elemento <LangVersion>. Adicione a seguinte configuração ao arquivo Directory.Build.props:

<Project>
 <PropertyGroup>
   <LangVersion>preview</LangVersion>
 </PropertyGroup>
</Project>

As compilações em todos os subdiretórios do diretório que contém esse arquivo agora usam a versão prévia do C#. Para obter mais informações, confira Personalizar seu build.

Referência à versão da linguagem C#

Importante

O uso de uma versão da linguagem C# mais recente que a versão associada ao TFM de destino não tem suporte.

A tabela a seguir mostra todas as versões atuais da linguagem C#. Os compiladores mais antigos podem não entender todos os valores. Se você instalar o SDK do .NET mais recente, terá acesso a tudo o que está listado.

Valor Significado
preview O compilador aceita todas as sintaxes de linguagem válidas da versão prévia mais recente.
latest O compilador aceita a sintaxe da versão lançada mais recente do compilador (incluindo a versão secundária).
latestMajor
ou default
O compilador aceita a sintaxe da versão principal mais recente lançada do compilador.
13.0 O compilador aceita somente a sintaxe incluída no C# 13 ou inferior.
12.0 O compilador aceita somente a sintaxe incluída no C# 12 ou versão inferior.
11.0 O compilador aceita somente a sintaxe incluída no C# 11 ou inferior.
10.0 O compilador aceita somente a sintaxe incluída no C# 10 ou inferior.
9.0 O compilador aceita somente a sintaxe incluída no C# 9 ou inferior.
8.0 O compilador aceita somente a sintaxe incluída no C# 8.0 ou inferior.
7.3 O compilador aceita somente a sintaxe incluída no C# 7.3 ou inferior.
7.2 O compilador aceita somente a sintaxe incluída no C# 7.2 ou inferior.
7.1 O compilador aceita somente a sintaxe incluída no C# 7.1 ou inferior.
7 O compilador aceita somente a sintaxe incluída no C# 7.0 ou inferior.
6 O compilador aceita somente a sintaxe incluída no C# 6.0 ou inferior.
5 O compilador aceita somente a sintaxe incluída no C# 5.0 ou inferior.
4 O compilador aceita somente a sintaxe incluída no C# 4.0 ou inferior.
3 O compilador aceita somente a sintaxe incluída no C# 3.0 ou inferior.
ISO-2
ou 2
O compilador aceita somente a sintaxe incluída no ISO/IEC 23270:2006 C# (2.0).
ISO-1
ou 1
O compilador aceita somente a sintaxe incluída no ISO/IEC 23270:2003 C# (1.0/1.2).