O .NET SDK atual não é compatível com a segmentação do erro .NET Standard 2.0 na atualização 15.3 do Visual Studio 2017

119

Quero criar um projeto de biblioteca de classes com o Target Framework .NET Standard 2.0.

Eu atualizei meu Visual Studio 2017para a Versão 15.3e também no instalador Visual Studio verificado .NET Framework 4.7 SDKe .NET Framework 4.7 targeting packmanualmente e instalado-los.

Ainda não há .NET Standard 2.0opção na caixa de combinação Target Framework na janela Projeto / Aplicativo. Então, mudei a tag TargetFramework no .csprojarquivo manualmente para netstandard2.0, mas depois de tentar construir, recebo este erro:

O .NET SDK atual não oferece suporte para o .NET Standard 2.0. Direcione o .NET Standard 1.6 ou inferior ou use uma versão do .NET SDK compatível com .NET Standard 2.0.

sahar
fonte
4
Você tem um global.jsonarquivo fixando seu .NET Core SDK em 1.x? Você instalou o .NET Core 2.0 SDK separadamente? (Eu esperava que fosse incluído com o VS, mas não faria mal instalá-lo de qualquer maneira.)
Jon Skeet
1
@JonSkeet instalando o SDK do .NET Core 2.0 separadamente funcionou. Será bom se você adicionar sua sugestão como resposta aqui.
sahar

Respostas:

144

Parece que instalar a atualização VS2017 para essa versão específica também não instalou o SDK do .NET Core 2.0. Você pode fazer o download aqui .

Para verificar qual versão do SDK você já instalou, execute

dotnet --info

a partir da linha de comando. Observe que, se houver um global.jsonarquivo em seu diretório de trabalho atual ou em qualquer diretório ancestral, isso substituirá a versão do SDK executada. (Isso é útil se você deseja impor uma versão específica para um projeto, por exemplo.)

A julgar pelos comentários, algumas versões das atualizações do VS2017 instalam o .NET Core SDK. Suspeito que pode variar um pouco com o tempo.

Jon Skeet
fonte
1
@Marwie: Para atingir netstandard2.0, acho que sim. Não tentei direcionar isso com o SDK 1.0, mas não ficaria surpreso se falhasse. Você ainda pode direcionar netstandard1.X com o 1.0 SDK, é claro.
Jon Skeet de
6
Ok - eu sou novo no assunto - fiquei surpreso com a estreita relação entre o núcleo .net e o padrão .net - não foi a razão para criar o padrão .net para omitir tais dependências? Por que não seria enviado em um pacote separado?
Marwie de
1
@Marwie: Bem, o .NET Core SDK é separado do .NET Core Runtime, que é separado do .NET Standard. Mas o SDK "conhece" um conjunto de estruturas de destino e não me surpreende que não funcione com uma futura . É como esperar que o Visual Studio 2013 compile o código C # 7. Embora fosse possível que a MS o tivesse projetado de forma que você não precisasse do SDK do .NET Core 2.0 para atingir o netstandard2.0, seria um caso de uso estranho querer isso de qualquer maneira, IMO.
Jon Skeet de
3
Recebi o erro depois de desinstalar todos os SDKs .net Core 1.x. Eu ainda tinha a Microsoft. .NET core SDK 2.0.2, 2.0.3, 2.1.1 e 2.1.2 instalado e VS 2017 5.2. Uma vez fiz uma instalação manual do Microsoft atual. .NET core SDK (2.1.3) Eu poderia compilar meus projetos novamente. Eu me pergunto o que, ao remover os SDKs 1.x, quebrou os SDKs 2.x.
Desenvolvedor SOHO
2
@ Justin: Ok, então parece que o SDK 2.1.4 não foi instalado corretamente ou você tem um arquivo global.json fixando-o em uma versão antiga.
Jon Skeet
20

enquanto as respostas acima não resolveram meu problema. Eu finalmente resolvi especificamente acessando este link https://www.microsoft.com/net/download/visual-studio-sdks e baixando o SDK necessário para Visual Studio . Foi muito confuso e não entendo porque, mas isso resolveu o meu problema

Johnny Camby
fonte
Não posso simplesmente votar a favor, isso também resolveu meu problema, mas espero que alguém esclareça o motivo por trás desse trabalho.
Beytan Kurt
Essa solução funcionou para mim também. Para mim, era uma questão de incompatibilidade com o SDK mais recente. Se você estiver usando o Visual Studio 2017, não poderá usar a versão mais recente do .NET Core SDK.
zero
11

Para mim, a solução foi mudar a versão global.jsonpara refletir a instalada.

Como os outros disseram a versão pode ser encontrada rodando dotnet --infoem cmd

Este:

{
  "projects": [ "src", "test" ],
  "sdk": {
    "version": "2.0.3"
  }
}

Passou a ser:

{
  "projects": [ "src", "test" ],
  "sdk": {
    "version": "2.1.4"
  }
}

Você também pode criar o arquivo global.json executando

dotnet new globaljson --sdk-version 2.1.4

na raiz do projeto

lsp
fonte
2
Onde esse global.jsonarquivo seria encontrado se ele existisse?
Bruno Bieri
Acho que o ms removeu esse arquivo, verifique seus arquivos .sln e .csproj :)
lsp
2
O arquivo global.jsonestaria próximo ao arquivo de solução. Normalmente incluo como um item de solução na própria solução. Descobri em meus experimentos que, sem fechar e recarregar a solução, alterar a versão em global.jsonpode levar a erros de construção estranhos. Meu comentário se aplica ao VS2018, versão 15.9.2, com .NET Core SDK 2.2.100.
Manfred
Dos documentos .NET Core SDK looks for a global.json file in the current working directory ... or one of its parent directories . Assim como um arquivo de tipo de herança.
StuartLC
10

Isso acontece às vezes quando estou tentando abrir meus projetos antigos, o que me ajuda é mudar o framework de destino dos projetos. Ir para Projeto -> ProjectName Properties ... e mudar a estrutura de destino para o que você tem instalado. Propriedades do projeto

H35am
fonte
O menu suspenso não mostra nada para mim. Alguma ideia?
Danny
9

Isso funcionou para mim

Use a instalação do Visual Studio

Na aba "Workloads" marque ".Net Core cross-platform development" e clique em "Modify"

insira a descrição da imagem aqui

Não se esqueça de marcar "Ferramentas de desenvolvimento .NET Core 2.0" no menu à esquerda.

Fonte

Nota

Eu instalei o Asp Net Core antes, porém não aparecia no meu Visual Studio, logo depois que instalei usando a instalação do Visual Studio apareceu para mim.

Wictor Chaves
fonte
1
Como alternativa, você pode instalar o que precisa aqui: dotnet.microsoft.com/download/…
user2173353
3

Quando atualizei o Visual Studio para a versão 15.5.1, o .Net Core SDK foi atualizado para 2.X, portanto, esse erro foi embora. Quando corro dotnet --info, vejo o seguinte agora:

insira a descrição da imagem aqui

Johnny Oshika
fonte
3

Acabei de fazer isso com 15.8.3 depois de desinstalar alguns SDKs de visualização do .NET Core 1.x, meu aplicativo não compilava e exibia o erro.

Foi corrigido com a instalação da versão x86 mais recente do SDK, embora eu esteja no Windows 10 x64.

Presumo que seja porque o VS 2017 ainda é um programa x86 e, embora os programas sejam executados como x64, o compilador estava procurando por um SDK x86 apropriado

Paul Hatcher
fonte
3

Tive instalações do Visual Studio 2019 e 2017. Tentei instalar o .NET Core 2.X SDK para VS2017 separadamente, mas sem sorte.

O problema é que eu tenho o .NET Core 3.0 SDK instalado como versão padrão do SDK , o que o VS2017 não gosta.

Minha solução foi mudar a versão do SDK para o projeto específico.

  • Primeiro, liste seus SDKs instalados para encontrar a versão desejada :
$ dotnet --info

.NET Core SDK (reflecting any global.json):
 Version:   3.1.100
 Commit:    cd82f021f4

Runtime Environment:
 OS Name:     Windows
 OS Version:  10.0.18362
 OS Platform: Windows
 RID:         win10-x64
 Base Path:   C:\Program Files\dotnet\sdk\3.1.100\

Host (useful for support):
  Version: 3.1.0
  Commit:  65f04fb6db

.NET Core SDKs installed:
  1.1.14 [C:\Program Files\dotnet\sdk]
  2.1.202 [C:\Program Files\dotnet\sdk]
  2.1.509 [C:\Program Files\dotnet\sdk]
  2.2.110 [C:\Program Files\dotnet\sdk]
  3.0.100 [C:\Program Files\dotnet\sdk]
  3.1.100 [C:\Program Files\dotnet\sdk]
  • No seu diretório de soluções :
$ dotnet new globaljson --sdk-version 2.2.110 --force

Agora, dotnetusará a versão do SDK especificada para esta solução.

Não encontrei uma maneira de fazer isso em todo o sistema sem também bagunçar meus projetos 3.0.

J. Doeseph
fonte
Parece estranho que isso seja necessário, mas greating um global.json (para a versão 2.1.513) resolveu meu problema também.
8128
2

Na verdade, para mim aconteceu de forma oposta a outras respostas.

Eu fiz instalar o mais recente .NET Core SDK antes da emissão apareceu (3.0.0-Preview2 no meu caso) não ter a última versão do Visual Studio (não tenho certeza se isso faria qualquer diferença).

Portanto, a solução foi apenas desinstalar o SDK do .NET Core mais recente . (Isso não é perfeito se você precisar, então você pode considerar a atualização do Visual Studio para o mais recente, mas pelo menos esse problema contínuo resolve).

Agat
fonte
1

Eu apenas passei por esse problema. No meu caso, eu tinha um script de trabalho

SET devenvPath=C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\devenv.exe
"%devenvPath%" mySolution.sln /Rebuild "DebugWithUT|AnyCpu" /Out mySolution.Build.log

Hoje comecei a receber exatamente esse erro. Mas agora me lembro de instalar o VS2019 no dia anterior. Parece que mudou algo para o VS2017. Eu fui para a atualização do VS2017, instalei a última versão / atualização e consertei.

TS
fonte
0

Eu tive o mesmo problema e tenho a versão mais recente do Microsoft Visual Studio Community 2017 versão 15.7.3

Acabei de baixar o SDK 2.1 mais recente e não há mais problemas de segmentação. https://www.microsoft.com/net/download/thank-you/dotnet-sdk-2.1.301-windows-x64-installer

Informações: Microsoft Visual Studio Community 2017 Versão 15.7.3 VisualStudio.15.Release / 15.7.3 + 27703.2026 Microsoft .NET Framework Versão 4.7.03056

Versão Instalada: Comunidade

Ferramentas C # 2.8.3-beta6-62923-07. Hash de confirmação: componentes 7aafab561e449da50712e16c9e81742b8e7a2969 C # usados ​​no IDE. Dependendo do tipo de projeto e das configurações, uma versão diferente do compilador pode ser usada.

Ferramentas Comuns do Azure 1.10 Fornece serviços comuns para uso pelos Serviços Móveis do Azure e Ferramentas do Microsoft Azure.

NuGet Package Manager 4.6.0 NuGet Package Manager no Visual Studio. Para obter mais informações sobre o NuGet, visite http://docs.nuget.org/ .

ProjectServicesPackage Extension 1.0 ProjectServicesPackage Informações detalhadas da extensão Visual Studio

ResourcePackage Extension 1.0 ResourcePackage Visual Studio Extension Informações detalhadas

Ferramentas do Visual Basic 2.8.3-beta6-62923-07. Hash de confirmação: 7aafab561e449da50712e16c9e81742b8e7a2969 Componentes do Visual Basic usados ​​no IDE. Dependendo do tipo de projeto e das configurações, uma versão diferente do compilador pode ser usada.

Visual Studio Code Debug Adapter Host Package 1.0 Camada de interoperabilidade para hospedar adaptadores de depuração do Visual Studio Code no Visual Studio

Ferramentas do Visual Studio para Unity 3.7.0.1 Ferramentas do Visual Studio para Unity

islandTraderFX
fonte
0

certifique-se de baixar o x86 SDK em vez de apenas o x64 SDK para visual studio.

JuFo
fonte
0

Eu tive o mesmo problema, pois o .NET SDK atual não oferece suporte para o .NET Core 3.1. Use o .NET Core 1.1 ou inferior ou use uma versão do .NET SDK compatível com o .NET Core 3.1

1) Certifique-se de que o SDK do .Net esteja instalado em sua máquina. Baixe o .NET !

2) definir as variáveis ​​de ambiente PATH conforme o caminho abaixo

Arjun Dasari
fonte
0

Tive esse problema ao tentar criar minha solução no TFS. Estávamos usando a tarefa "dot net publish". Usar o msbuild quebrou o gelo para nós.

Potatojaisiladki
fonte