O código C# em modelos sem suporte em versões anteriores
A partir do .NET 6, os modelos de projeto que são fornecidos com o SDK do .NET usam os recursos de linguagem C# mais recentes. Os seguintes recursos de linguagem são usados no código gerado pelo modelo ou habilitados por padrão no projeto:
- Instruções de nível superior
- Diretivas using globais
- Namespaces com escopo de arquivo
- Expressões new com tipo de destino
- Tipos de referência anuláveis
- Valores retornados de Async Main
Alguns dos recursos de linguagem C# mais recentes não são compatíveis com estruturas de destino anteriores, portanto, você pode enfrentar problemas nos seguintes cenários:
- Quando você usa um modelo do .NET 6 e, em seguida, altera a estrutura de destino para uma versão anterior.
- Quando você usa um modelo do .NET 6 e, em seguida, vários destinos adicionando uma versão anterior da estrutura de destino.
Versão introduzida
SDK do .NET 6.0.100
Comportamento antigo
Nas versões anteriores do .NET, você pode alterar a estrutura de destino para uma versão anterior ou adicionar uma versão adicional sem precisar alterar o código C# criado pelo modelo de projeto.
Novo comportamento
A partir do .NET 6, quando você altera ou adiciona uma estrutura de destino, talvez seja necessário alterar o código C# gerado pelo modelo para evitar o uso de recursos de linguagem sem suporte. O projeto não será compilado sem essas alterações. Os erros e avisos do compilador geralmente orientam você sobre como alterar o código gerado para torná-lo compatível com a nova estrutura de destino.
Categoria da alteração
Essa alteração afeta a compatibilidade de origem.
Motivo da alteração
Queremos que os modelos de projeto sejam sincronizados com os recursos de linguagem mais recentes. O cenário de uso principal de direcionamento da estrutura mais recente usa os recursos de linguagem C# mais recentes.
Ação recomendada
Se você encontrar erros e avisos em tempo de compilação ao redirecionar para uma versão anterior da estrutura, use essas informações para orientar você na alteração do código gerado para torná-lo compatível com a estrutura de destino selecionada.
Para evitar erros de tempo de compilação ao direcionar uma estrutura mais antiga, siga estas sugestões:
- Evite alterar a estrutura de destino para uma versão anterior. Em vez disso, selecione a estrutura de destino desejada durante a criação do projeto no Visual Studio ou na linha de comando usando
dotnet new <templateName> --framework <targetFramework>
. - Ao criar um projeto de vários destinos, selecione a versão mais baixa da estrutura de destino ao criar o projeto. Inclua as estruturas de destino adicionais após a criação do projeto.
APIs afetadas
N/D