C# - Controle de versão


 Hoje veremos como é feito o controle de versão da linguagem C#.

O compilador da linguagem C# mais recente vai determinar uma versão padrão da linguagem com base no framework de destino do projeto.

Isso acontece porque a linguagem C# pode ter recursos que dependem de tipos ou componentes em tempo de execução que não estão disponíveis em todas as implementações do framework .NET.

Dessa forma, independentemente do destino para o qual o seu projeto for criado, você vai obter a versão da linguagem mais compatível.

Estas regras se aplicam ao compilador fornecido ao Visual Studio 2019 ou o SDK do .NET Core 3.0.

Os compiladores C# que fazem parte do Visual Studio 2017 ou de versões anteriores do SDK do .NET Core são direcionados para a versão 7.0 da linguagem C# por padrão.

Assim, o compilador determina um padrão com base nestas regras:

Framwork de destino versão Padrão da versão da linguagem C#
.NET Core  Win  C# 8.0
.NET Core  2.x  C# 7.3
.NET Standard  2.1  C# 8.0
.NET Standard  2.0  C# 7.3
.NET Standard  1.x  C# 7.3
.NET Framework  todas  C# 7.3

E qual regra vale para as versões em preview ?

Quando o seu projeto se destina a um framework com uma versão  em preview que tem uma versão da linguagem correspondente, a versão de linguagem usada é a preview.

Com isso, é possível usar os recursos mais recentes que são garantidos para trabalhar com essa versão prévia em qualquer ambiente sem afetar seus projetos que direcionam uma versão lançada do .NET Core

E como podemos substituir uma versão padrão ?

Se você precisar especificar uma versão da linguagem C# temos as seguintes opções para fazer isso:

1- Editar manualmente o arquivo de projeto

Podemos definir a versão da linguagem no arquivo de projeto. Por exemplo , se você quiser acessar os recursos de versões em preview basta alterar o arquivo de projeto conforme abaixo:

Aqui o valor preview vai usar a versão em preview mais recente da linguagem C# compatível com seu compilador.

2- Definir a versão da linguagem  para vários projetos em um diretório

Aqui podemos criar um arquivo Directory.Build.props que contém o elemento <LangVersion> para configurar vários diretórios.

Normalmente, fazemos isso no diretório da solução. A seguir adicionamos o código abaixo a um arquivo Directory.Build.props no diretório de solução:

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

Agora, os builds de todo subdiretório do diretório que contém esse arquivo usarão a versão preview do C#.

3- Configurar a opção -langversion do compilador

A opção -langversion:option faz com que o compilador aceite somente a sintaxe incluída na especificação de linguagem C# escolhida.

Independentemente de qual configuração -langversion for usada, você usará a versão atual do Common Language Runtime para criar seu .exe ou .dll.

Referência a versão da linguagem C#

A tabela a seguir mostra todas as versões atuais da linguagem C#. Se instalar o .NET Core 3.0, você terá acesso a tudo que está listado.

Valor Significado
preview O compilador aceita todas as sintaxes de linguagem válidas da versão preview mais recente.
Ultima versão O compilador aceita a sintaxe da versão lançada mais recente do compilador
latestMajor O compilador aceita a sintaxe da versão principal mais recente lançada do compilador.
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.

E estamos conversados...

"E Jesus lhe disse: Ninguém, que lança mão do arado e olha para trás, é apto para o reino de Deus."
Lucas 9:62

 

Referências:


José Carlos Macoratti