L'attuale .NET SDK non supporta il targeting dell'errore .NET Standard 2.0 nell'aggiornamento 15.3 di Visual Studio 2017


119

Voglio creare un progetto di libreria di classi con Target Framework .NET Standard 2.0.

Ho aggiornato il mio Visual Studio 2017alla versione 15.3e anche nel programma di installazione di Visual Studio controllato .NET Framework 4.7 SDKe .NET Framework 4.7 targeting packmanualmente e installato.

Non è ancora presente alcuna .NET Standard 2.0opzione nella casella combinata Framework di destinazione nella finestra Progetto / Applicazione. Quindi ho cambiato manualmente il tag TargetFramework nel .csprojfile in netstandard2.0, ma dopo aver provato a compilare ottengo questo errore:

L'attuale .NET SDK non supporta il targeting per .NET Standard 2.0. Scegli come target .NET Standard 1.6 o versioni precedenti oppure usa una versione di .NET SDK che supporti .NET Standard 2.0.


4
Hai un global.jsonfile che aggiunge il tuo .NET Core SDK a 1.x? Hai installato separatamente .NET Core 2.0 SDK? (Mi aspetto che sia incluso con VS, ma non sarebbe male installarlo comunque.)
Jon Skeet

1
@ JonSkeet l'installazione di .NET Core 2.0 SDK ha funzionato separatamente. Sarà utile se aggiungi il tuo suggerimento come risposta qui.
sahar

Risposte:


144

Sembra che l'installazione dell'aggiornamento VS2017 per quella versione specifica non abbia installato anche .NET Core 2.0 SDK. Puoi scaricarlo qui .

Per verificare quale versione dell'SDK hai già installato, esegui

dotnet --info

dalla riga di comando. Tieni presente che se è presente un global.jsonfile nella directory di lavoro corrente o in una directory antenata, ciò sovrascriverà la versione dell'SDK in esecuzione. (Questo è utile, ad esempio, se desideri applicare una versione particolare per un progetto.)

A giudicare dai commenti, alcune versioni di VS2017 aggiornamenti fanno installare .NET SDK Principale. Ho il sospetto che possa variare leggermente nel tempo.


1
@ Marwie: Per mirare a netstandard2.0, sospetto che lo fai. Non ho provato a indirizzarlo con 1.0 SDK, ma non sarei sorpreso se fallisse. Ovviamente puoi ancora scegliere netstandard1.X con l'SDK 1.0.
Jon Skeet

6
Ok, sono nuovo in materia - sono rimasto sorpreso dalla stretta relazione tra .net core e .net standard - non è stata la ragione per creare lo standard .net per omettere tali dipendenze? Perché non dovrebbe essere spedito in un pacco separato?
Marwie

1
@ Marwie: Bene, .NET Core SDK è separato da .NET Core Runtime, che è separato da .NET Standard. Ma l'SDK "conosce" una serie di framework di destinazione e non sono sorpreso che non funzionerà con uno futuro . È come aspettarsi che Visual Studio 2013 compili il codice C # 7. Mentre sarebbe forse essere fattibile per MS di aver ingegnerizzato in modo che non avete bisogno di 2.0 SDK .NET Core netstandard2.0 bersaglio, sarebbe un caso d'uso strano a voler che comunque, IMO.
Jon Skeet

3
Ho ricevuto l'errore dopo aver disinstallato tutti gli SDK .net Core 1.x. Avevo ancora Microsoft. .NET core SDK 2.0.2, 2.0.3, 2.1.1 e 2.1.2 installato e VS 2017 5.2. Una volta ho eseguito l'installazione manuale dell'attuale Microsoft. .NET core SDK (2.1.3) Potrei nuovamente compilare i miei progetti. Mi chiedo cosa nella rimozione degli SDK 1.x abbia rotto gli SDK 2.x.
Sviluppatore SOHO

2
@ Justin: Ok, quindi sembra che l'SDK 2.1.4 non sia stato installato correttamente o che tu abbia un file global.json che lo blocca a una vecchia versione.
Jon Skeet

20

mentre le risposte di cui sopra non hanno risolto il mio problema. Alla fine l'ho risolto andando specificatamente a questo link https://www.microsoft.com/net/download/visual-studio-sdks e scarica l' SDK richiesto per Visual Studio . Era davvero confuso e non capisco perché, ma questo ha risolto il mio problema


Non posso semplicemente votare questo, anche questo ha risolto anche il mio problema, ma spero che qualcuno chiarisca il motivo dietro questo lavoro.
Beytan Kurt

Questa soluzione ha funzionato anche per me. Per me era una questione di incompatibilità con l'ultimo SDK. Se usi Visual Studio 2017, non puoi usare la versione più recente di .NET Core SDK.
zero

11

Per me la soluzione era cambiare la versione in modo global.jsonda riflettere quella installata.

Come gli altri hanno detto, la versione può essere trovata in esecuzione dotnet --infoin cmd

Questo:

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

Divenne:

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

È inoltre possibile creare il file global.json eseguendo

dotnet new globaljson --sdk-version 2.1.4

alla radice del progetto


2
Dove si troverebbe quel global.jsonfile se esistesse?
Bruno Bieri

Penso che ms abbia rimosso quel file, controlla i tuoi file .sln e .csproj :)
lsp

2
Il file global.jsonsarebbe accanto al file della soluzione. In genere ho incluso come elemento della soluzione nella soluzione stessa. Ho scoperto nei miei esperimenti che senza chiudere e ricaricare la soluzione, cambiare la versione in global.jsonpuò portare a strani errori di compilazione. Il mio commento si applica a VS2018, versione 15.9.2, con .NET Core SDK 2.2.100.
Manfred

Dai documenti .NET Core SDK looks for a global.json file in the current working directory ... or one of its parent directories . Così come un file di tipo ereditario.
StuartLC

10

A volte questo accade quando cerco di aprire i miei vecchi progetti, ciò che mi aiuta è cambiare il framework di destinazione dei progetti. Vai a Progetto -> Nome progetto Proprietà ... e modificare il quadro di destinazione a quello che si è installato. Proprietà del progetto


Il menu a discesa non mostra nulla per me. Qualche idea?
Danny

9

Questo ha funzionato per me

Usa l' installazione di Visual Studio

Nella scheda "Carichi di lavoro" seleziona "Sviluppo multipiattaforma .Net Core" e fai clic su "Modifica"

inserisci qui la descrizione dell'immagine

Non dimenticare di selezionare "Strumenti di sviluppo .NET Core 2.0" nel menu a sinistra.

fonte

Nota

Ho installato Asp Net Core prima, tuttavia non è apparso sul mio Visual Studio, subito dopo aver installato utilizzando l'installazione di Visual Studio è apparso per me.


1
In alternativa, puoi installare quello che ti serve da qui: dotnet.microsoft.com/download/…
user2173353

3

Quando ho aggiornato Visual Studio alla versione 15.5.1, .Net Core SDK è stato aggiornato a 2.X, quindi questo errore è andato via. Quando corro dotnet --info, ora vedo quanto segue:

inserisci qui la descrizione dell'immagine


3

Ho appena avuto questo con 15.8.3 dopo aver disinstallato alcuni SDK di anteprima .NET Core 1.x, la mia applicazione non si compilava e mostrava l'errore.

È stato risolto installando l'ultima versione x86 dell'SDK anche se sono su Windows 10 x64.

Presumo che ciò sia dovuto al fatto che VS 2017 è ancora un programma x86 e sebbene i programmi vengano eseguiti come x64, il compilatore stava cercando un SDK x86 appropriato


3

Ho installato sia Visual Studio 2019 che 2017. Ho provato a installare separatamente .NET Core 2.X SDK per VS2017 ma senza fortuna.

Il problema è che ho .NET Core 3.0 SDK installato come versione SDK predefinita , cosa che a VS2017 non piace.

La mia soluzione era cambiare la versione SDK per il progetto specifico.

  • Innanzitutto, elenca gli SDK installati per trovare la versione desiderata :
$ 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]
  • Dalla directory della soluzione :
$ dotnet new globaljson --sdk-version 2.2.110 --force

Ora, dotnetutilizzerà la versione SDK specificata per questa soluzione.

Non ho trovato un modo per farlo a livello di sistema senza rovinare anche i miei progetti 3.0.


Sembra strano che questo dovrebbe essere necessario, ma l'ottimizzazione di un global.json (per la versione 2.1.513) ha risolto anche il mio problema.
8128

2

In realtà, a me è successo in modo opposto ad altre risposte.

Ho installato l'ultima versione di .NET Core SDK prima che si presentasse il problema (3.0.0-preview2 nel mio caso) non avendo l'ultima versione di Visual Studio (non sono sicuro se questo avrebbe fatto la differenza).

Quindi, la soluzione era solo disinstallare l'ultimo .NET Core SDK . (Questo non è perfetto se ne hai bisogno, quindi potresti prendere in considerazione l'aggiornamento di Visual Studio a quello più recente, ma almeno questo ha risolto il problema in corso).


1

Ho appena passato questo problema. Nel mio caso avevo uno script funzionante

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

Oggi ho iniziato a ricevere questo errore esatto. Ma ora ricordo di aver installato VS2019 il giorno prima. Sembra che abbia cambiato qualcosa per VS2017. Sono andato all'aggiornamento VS2017, ho installato l'ultima versione / aggiornamento e l'ho risolto.


0

Ho avuto lo stesso problema e ho l'ultima versione di Microsoft Visual Studio Community 2017 versione 15.7.3

Ho appena scaricato l'ultimo SDK 2.1 e non ho più problemi di targeting. https://www.microsoft.com/net/download/thank-you/dotnet-sdk-2.1.301-windows-x64-installer

Informazioni: Microsoft Visual Studio Community 2017 versione 15.7.3 VisualStudio.15.Release / 15.7.3 + 27703.2026 Microsoft .NET Framework versione 4.7.03056

Versione installata: Community

Strumenti C # 2.8.3-beta6-62923-07. Hash di commit: 7aafab561e449da50712e16c9e81742b8e7a2969 componenti C # utilizzati nell'IDE. A seconda del tipo e delle impostazioni del progetto, è possibile utilizzare una versione diversa del compilatore.

Strumenti comuni di Azure 1.10 Fornisce servizi comuni utilizzabili da Servizi mobili di Azure e Strumenti di Microsoft Azure.

NuGet Package Manager 4.6.0 NuGet Package Manager in Visual Studio. Per ulteriori informazioni su NuGet, visitare http://docs.nuget.org/ .

ProjectServicesPackage Extension 1.0 ProjectServicesPackage Informazioni dettagliate sull'estensione di Visual Studio

ResourcePackage Extension 1.0 ResourcePackage Visual Studio Extension Informazioni dettagliate

Strumenti di Visual Basic 2.8.3-beta6-62923-07. Hash di commit: 7aafab561e449da50712e16c9e81742b8e7a2969 Componenti di Visual Basic utilizzati nell'IDE. A seconda del tipo e delle impostazioni del progetto, è possibile utilizzare una versione diversa del compilatore.

Livello di interoperabilità del pacchetto host 1.0 dell'adattatore di debug di Visual Studio Code per l'hosting degli adattatori di debug di Visual Studio Code in Visual Studio

Visual Studio Tools per Unity 3.7.0.1 Visual Studio Tools per Unity


0

assicurati di scaricare l'SDK x86 anziché solo l'SDK x64 per Visual Studio.


0

Ho avuto lo stesso problema in quanto l'attuale .NET SDK non supporta il targeting di .NET Core 3.1. Scegli come target .NET Core 1.1 o versioni precedenti oppure usa una versione di .NET SDK che supporti .NET Core 3.1

1) Assicurati che .Net core SDK sia installato sulla tua macchina. Scarica .NET !

2) imposta le variabili d'ambiente PATH come sotto Path


0

Ho riscontrato questo problema durante il tentativo di creare la mia soluzione in TFS. Stavamo usando l'attività "dot net publish". L'uso di msbuild ha rotto il ghiaccio per noi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.