Símbolo de pré-processador NETCOREAPP3_1 não é definido ao direcionar o .NET 5
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 que eles se destinam. Esse é o mesmo comportamento do .NET Core 1.0 – 3.1.
Versão introduzida
5.0 RC2
Descrição das alterações
No .NET 5 versão prévia de 7 a RC1, projetos direcionados a net5.0
definem 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 posteriores, os projetos definem apenas símbolos para os monikers de estrutura de destino (TFM) aos quais ele se destinam e não para versões anteriores.
Motivo da alteração
A alteração da versão prévia 7 foi revertida devido aos comentários dos clientes. Definir símbolos para versões anteriores surpreendeu e confundiu os clientes, e alguns pensaram que era um bug no compilador do C#.
Ação recomendada
Verifique se sua lógica #if
não pressupõe que NETCOREAPP3_1
esteja definido quando o projeto for direcionado a net5.0
ou superior. Em vez disso, suponha que NETCOREAPP3_1
só seja definido quando o projeto for explicitamente direcionado a netcoreapp3.1
.
Por exemplo, se seu projeto se direciona para .NET Core 2.1 e .NET Core 3.1 e você chamar APIs que foram introduzidas no .NET Core 3.1, sua lógica #if
deverá ser a seguinte:
#if NETCOREAPP2_1 || NETCOREAPP3_0
// Fallback behavior for old versions.
#elif NETCOREAPP
// Behavior for .NET Core 3.1 and later.
#endif
APIs afetadas
N/D
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de