Ao usar Visual Studio Enterprise 16.3.7
em duas máquinas separadas, uma é compilada e a outra gera o erro:
O recurso 'usando declarações' não está disponível no C # 7.3. Por favor, use o idioma versão 8.0 ou superior.
Isso pode ser facilmente resolvido na máquina trabalhando nenhum ajustando LangVersion
em .csproj
como sugerido aqui https://stackoverflow.com/a/48085575/3850405 ou deixar Visual Studio corrigi-lo automaticamente como a tela de impressão acima.
<LangVersion>8.0</LangVersion>
O que não consigo entender é por que uma máquina é compacta sem essa linha .csproj
e a outra precisa dela?
dotnet --list-sdks
mostra?.NET Framework 4.6.1
eLangVersion
não está definido.Respostas:
Eu recebi o mesmo erro, mas simplesmente esqueci de incluir o
atributo em TODOS os arquivos .csproj na solução. A seguir, minha configuração atual do c # 8:
Eu achei os seguintes documentos os mais úteis ao migrar do núcleo 2.2 para o 3.x:
MSDN 2.2 -> 3.0
MSDN 3.0 -> 3.1
fonte
<LangVersion>latest</LangVersion>
vez de<LangVersion>8.0</LangVersion>
MSDN 2.2 -> 3.0
deve ser vinculado ao seguinte: docs.microsoft.com/en-us/aspnet/core/migration/22-to-30 Tentei editar a resposta para alterá-la, mas "fila de edição sugerida está cheio ", então será publicado aqui.Eu tive que atualizar o Visual Studio para a versão de 16.3.X para 16.4.2. Isso resolveu o problema e não precisei adicionar nenhum LangVersion.
Créditos: https://github.com/aspnet/AspNetCore.Docs/issues/16047
fonte
Isso pode ocorrer porque o compilador usa, por padrão, versões diferentes da linguagem C # para diferentes Frameworks de Destino.
Para substituir o idioma C # padrão, adicione ao arquivo do projeto (conforme sugerido na pergunta):
ou:
Consulte Versão do idioma C # para obter as versões padrão do idioma C # para as diferentes estruturas de destino e como selecionar manualmente a versão do idioma C #.
Consulte também a resposta de estouro de pilha O C # 8 suporta o .NET Framework? para mais informações sobre este tópico.
Aqui está parte do artigo de versão do idioma C # :
Controle de versão em linguagem C #
O compilador C # mais recente determina uma versão do idioma padrão com base na (s) estrutura (s) de destino do seu projeto. Isso ocorre porque a linguagem C # pode ter recursos que dependem de tipos ou componentes de tempo de execução que não estão disponíveis em todas as implementações do .NET. Isso também garante que, para qualquer destino em que seu projeto seja construído, você obtenha a versão mais alta do idioma compatível por padrão.
As regras deste artigo se aplicam ao compilador entregue com o Visual Studio 2019 ou o SDK do .NET Core 3.0. Os compiladores C # que fazem parte da instalação do Visual Studio 2017 ou das versões anteriores do .NET Core SDK têm como destino o C # 7.0 por padrão.
Predefinições
O compilador determina um padrão com base nestas regras:
Substituir um padrão
Se você precisar especificar explicitamente sua versão do C #, poderá fazê-lo de várias maneiras:
Edite o arquivo do projeto
Você pode definir a versão do idioma no seu arquivo de projeto. Por exemplo, se você desejar explicitamente acessar recursos de visualização, adicione um elemento como este:
O valor
preview
usa a versão mais recente da linguagem C # de visualização disponível, suportada pelo compilador.Configurar vários projetos
Para configurar vários projetos, você pode criar um arquivo Directory.Build.props que contém o
<LangVersion>
elemento Você normalmente faz isso no diretório da solução. Adicione o seguinte a um arquivo Directory.Build.props no diretório da solução:Agora, as compilações em todos os subdiretórios do diretório que contêm esse arquivo usarão a versão C # de visualização. Para obter mais informações, consulte o artigo Personalizar sua compilação .
fonte
Fiz o download da versão mais recente do .Net Core 3.0 e 3.1 e tive o mesmo problema. Para mim, a correção parecia baixar a atualização mais recente do Visual Studio 2019 (para a versão 16.4.2).
Isso também reiniciou meu computador e o erro desapareceu.
fonte