Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
No .NET 5 RC2 e versões posteriores, os projetos não definem mais símbolos de pré-processador para versões anteriores, mas apenas para a versão de destino. Esse é o mesmo comportamento do .NET Core 1.0 - 3.1.
Versão introduzida
5,0 RC2
Alterar descrição
No .NET 5, desde o preview 7 até ao RC1, projetos que têm como alvo net5.0 definem ambos os símbolos de pré-processador NETCOREAPP3_1 e NET5_0. A intenção por trás dessa alteração de comportamento era que, a partir do .NET 5, os símbolos de compilação condicional seriam cumulativos.
No .NET 5 RC2 e posterior, os projetos definem apenas símbolos para os nomes de estrutura de destino (TFM) que eles visam, nem para versões anteriores.
Motivo da mudança
A alteração da prévia 7 foi revertida devido ao feedback dos clientes. A definição de símbolos para versões anteriores surpreendeu e confundiu os clientes, e alguns assumiram que era um bug no compilador C#.
Ação recomendada
Certifique-se de que sua #if lógica não assuma que NETCOREAPP3_1 está definida quando o projeto tem como alvo net5.0 ou superior. Em vez disso, suponha que NETCOREAPP3_1 só seja definido quando o projeto tenha como alvo explicitamente netcoreapp3.1.
Por exemplo, se o projeto tem como alvo múltiplas versões para .NET Core 2.1 e .NET Core 3.1 e chama APIs que foram introduzidas no .NET Core 3.1, a sua lógica #if deve ter a seguinte aparência:
#if NETCOREAPP2_1 || NETCOREAPP3_0
// Fallback behavior for old versions.
#elif NETCOREAPP
// Behavior for .NET Core 3.1 and later.
#endif
APIs afetadas
N/A