Das aktuelle .NET SDK unterstützt das Targeting von .NET Standard 2.0-Fehlern in Visual Studio 2017 Update 15.3 nicht

119

Ich möchte ein Klassenbibliotheksprojekt mit Target Framework .NET Standard 2.0 erstellen.

Ich habe meine Visual Studio 2017Version aktualisiert 15.3und auch im Visual Studio-Installationsprogramm überprüft .NET Framework 4.7 SDKund .NET Framework 4.7 targeting packmanuell überprüft .

Im .NET Standard 2.0Kombinationsfeld Target Framework im Fenster Projekt / Anwendung gibt es noch keine Option. Also habe ich das TargetFramework-Tag in der .csprojDatei manuell in geändert netstandard2.0, aber nach dem Versuch, es zu erstellen, wird folgende Fehlermeldung angezeigt :

Das aktuelle .NET SDK unterstützt kein Targeting von .NET Standard 2.0. Wählen Sie entweder .NET Standard 1.6 oder niedriger aus oder verwenden Sie eine Version des .NET SDK, die .NET Standard 2.0 unterstützt.

Sahar
quelle
4
Haben Sie eine global.jsonDatei, die Ihr .NET Core SDK auf 1.x fixiert? Haben Sie das .NET Core 2.0 SDK separat installiert? (Ich würde erwarten , dass es in VS enthalten ist, aber es würde trotzdem nicht schaden, es zu installieren.)
Jon Skeet
1
@ JonSkeet Installation von .NET Core 2.0 SDK separat funktioniert. Es ist gut, wenn Sie hier Ihren Vorschlag als Antwort hinzufügen.
Sahar

Antworten:

144

Es scheint, als hätte die Installation des VS2017-Updates für diese bestimmte Version nicht auch das .NET Core 2.0 SDK installiert. Das können Sie hier herunterladen .

Führen Sie aus, um zu überprüfen, welche Version des SDK bereits installiert ist

dotnet --info

von der Kommandozeile. Beachten Sie, dass, wenn sich eine global.jsonDatei in Ihrem aktuellen Arbeitsverzeichnis oder einem Vorgängerverzeichnis befindet, diese überschreibt, welche Version des SDK ausgeführt wird. (Dies ist nützlich, wenn Sie beispielsweise eine bestimmte Version für ein Projekt erzwingen möchten.)

Gemessen an Kommentaren, einige Versionen von VS2017 Updates tun den .NET Core - SDK installieren. Ich vermute, dass es im Laufe der Zeit etwas variieren kann.

Jon Skeet
quelle
1
@Marwie: Um netstandard2.0 ins Visier zu nehmen, vermute ich, dass Sie dies tun. Ich habe nicht versucht, dies mit dem 1.0 SDK zu erreichen, aber ich wäre nicht überrascht, wenn es fehlschlagen würde. Natürlich können Sie mit dem 1.0 SDK weiterhin auf netstandard1.X zielen.
Jon Skeet
6
Ok - ich bin neu in diesem Thema - ich war überrascht über die enge Beziehung zwischen .net Core und .net Standard - war nicht der Grund, einen .net Standard zu erstellen, um solche Abhängigkeiten wegzulassen? Warum wird es nicht in einem separaten Paket geliefert?
Marwie
1
@Marwie: Nun, das .NET Core SDK ist von der .NET Core Runtime getrennt, die vom .NET Standard getrennt ist. Aber das SDK "kennt" eine Reihe von Ziel-Frameworks, und ich bin nicht überrascht, dass es mit einem zukünftigen nicht funktionieren wird . Es ist so, als würde man erwarten, dass Visual Studio 2013 C # 7-Code kompiliert. Während es für MS möglicherweise machbar wäre , es so zu entwickeln, dass Sie das .NET Core 2.0 SDK nicht benötigen, um auf netstandard2.0 abzuzielen, wäre es ein seltsamer Anwendungsfall, dies trotzdem zu wollen, IMO.
Jon Skeet
3
Ich habe den Fehler erhalten, nachdem ich alle .net Core 1.x SDKs deinstalliert habe. Ich hatte immer noch Microsoft. .NET Core SDK 2.0.2, 2.0.3, 2.1.1 und 2.1.2 installiert und VS 2017 5.2. Einmal habe ich eine manuelle Installation des aktuellen Microsoft durchgeführt. .NET Core SDK (2.1.3) Ich konnte meine Projekte wieder kompilieren. Ich frage mich, was beim Entfernen der 1.x SDKs die 2.x SDKs kaputt gemacht hat.
SOHO Entwickler
2
@Justin: Okay, das klingt entweder so, als ob das 2.1.4 SDK nicht richtig installiert wurde, oder Sie haben eine global.json-Datei, die es an eine alte Version anheftet.
Jon Skeet
20

während die obigen Antworten mein Problem nicht lösten. Ich habe es endlich gelöst, indem ich speziell auf diesen Link https://www.microsoft.com/net/download/visual-studio-sdks gegangen bin und das erforderliche SDK für Visual Studio heruntergeladen habe . Es war wirklich verwirrend und ich verstehe nicht warum, aber das hat mein Problem gelöst

Johnny Camby
quelle
Ich kann das nicht einfach positiv bewerten, dies hat auch mein Problem gelöst, aber ich hoffe, jemand klärt den Grund für diese Arbeit.
Beytan Kurt
Diese Lösung hat auch bei mir funktioniert. Für mich war es eine Frage der Inkompatibilität mit dem neuesten SDK. Wenn Sie Visual Studio 2017 verwenden, können Sie nicht die neueste Version des .NET Core SDK verwenden.
Null
11

Für mich bestand die Lösung darin, die Version so zu ändern global.json, dass sie der installierten Version entspricht .

Wie die anderen sagten, läuft die Version dotnet --infoin cmd

Dies:

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

Wurden:

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

Sie können die Datei global.json auch durch Ausführen erstellen

dotnet new globaljson --sdk-version 2.1.4

an der Wurzel des Projekts

lsp
quelle
2
Wo würde diese global.jsonDatei gefunden werden, wenn sie existieren würde?
Bruno Bieri
Ich denke, ms hat diese Datei entfernt, überprüfen Sie Ihre .sln- und .csproj-Dateien :)
lsp
2
Die Datei global.jsonbefindet sich neben der Lösungsdatei. Ich habe normalerweise als Lösungselement in die Lösung selbst aufgenommen. In meinen Experimenten stellte ich fest, dass das Ändern der Version ohne Schließen und erneutes Laden der Lösung global.jsonzu seltsamen Erstellungsfehlern führen kann. Mein Kommentar gilt für VS2018, Version 15.9.2, mit .NET Core SDK 2.2.100.
Manfred
Aus den Dokumenten .NET Core SDK looks for a global.json file in the current working directory ... or one of its parent directories . Also wie eine Vererbungsdatei.
StuartLC
10

Dies passiert manchmal, wenn ich versuche, meine alten Projekte zu öffnen. Was mir hilft, ist das Ändern des Projektziel-Frameworks. Gehen Sie zu Projekt -> Projektname Eigenschaften ... und ändern Sie das Zielframework in das von Ihnen installierte. Projekteigenschaften

H35am
quelle
Das Dropdown-Menü zeigt mir nichts. Irgendwelche Ideen?
Danny
9

Das hat bei mir funktioniert

Verwenden Sie die Installation von Visual Studio

Aktivieren Sie auf der Registerkarte "Workloads" die Option ".Net Core plattformübergreifende Entwicklung" und klicken Sie auf "Ändern".

Geben Sie hier die Bildbeschreibung ein

Vergessen Sie nicht, im linken Menü ".NET Core 2.0-Entwicklungstools" zu aktivieren.

Quelle

Hinweis

Ich habe den Asp Net Core zuvor installiert, wurde jedoch nicht in meinem Visual Studio angezeigt, kurz nachdem ich ihn mithilfe der Installation von Visual Studio installiert hatte.

Wictor Chaves
quelle
1
Alternativ können Sie von hier aus installieren, was Sie benötigen: dotnet.microsoft.com/download/…
user2173353
3

Beim Upgrade von Visual Studio auf Version 15.5.1 wurde das .Net Core SDK auf 2.X aktualisiert, sodass dieser Fehler behoben wurde. Wenn ich renne dotnet --info, sehe ich jetzt Folgendes:

Geben Sie hier die Bildbeschreibung ein

Johnny Oshika
quelle
3

Ich hatte dies gerade mit 15.8.3, nachdem ich einige .NET Core 1.x-Vorschau-SDKs deinstalliert hatte. Meine Anwendung wurde nicht kompiliert und zeigte den Fehler an.

Es wurde behoben, indem die neueste x86-Version des SDK installiert wurde, obwohl ich unter Windows 10 x64 bin.

Ich nehme an, das liegt daran, dass VS 2017 immer noch ein x86-Programm ist und obwohl die Programme als x64 ausgeführt werden, suchte der Compiler nach einem geeigneten x86-SDK

Paul Hatcher
quelle
3

Ich hatte Installationen von Visual Studio 2019 und 2017. Ich habe versucht, das .NET Core 2.X SDK für VS2017 separat zu installieren, aber ohne Glück.

Das Problem ist, dass ich .NET Core 3.0 SDK als Standard-SDK-Version installiert habe , die VS2017 nicht mag.

Meine Lösung bestand darin, die SDK-Version für das jeweilige Projekt zu wechseln.

  • Zuerst Liste Ihrer installierten SDK die gewünschte Version zu finden :
$ 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]
  • Aus Ihrem Lösungsverzeichnis :
$ dotnet new globaljson --sdk-version 2.2.110 --force

dotnetVerwenden Sie jetzt die angegebene SDK-Version für diese Lösung.

Ich habe keinen Weg gefunden, dies systemweit zu tun, ohne auch meine 3.0-Projekte durcheinander zu bringen.

J. Doeseph
quelle
Es scheint seltsam, dass dies notwendig sein sollte, aber das Erstellen einer global.json (für Version 2.1.513) hat auch mein Problem gelöst.
8128
2

Eigentlich passierte es mir entgegengesetzt zu anderen Antworten.

Ich habe das neueste .NET Core SDK installiert, bevor das Problem auftrat (3.0.0-Vorschau2 in meinem Fall) und nicht die neueste Version von Visual Studio (nicht sicher, ob dies einen Unterschied machen würde).

Also, die Lösung war nur , dass die neuesten .NET Core - SDK zu deinstallieren . (Dies ist nicht perfekt, wenn Sie es benötigen. Sie können also ein Upgrade von Visual Studio auf das neueste in Betracht ziehen, aber zumindest das laufende Problem wurde behoben.)

Agat
quelle
1

Ich habe gerade diese Schwierigkeiten durchgemacht. In meinem Fall hatte ich ein funktionierendes Skript

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

Heute habe ich genau diesen Fehler bekommen. Aber jetzt erinnere ich mich, dass ich VS2019 am Tag zuvor installiert habe. Sieht so aus, als hätte sich etwas für VS2017 geändert. Ich ging zu VS2017 Update, installierte die neueste Version / Update und es reparierte es wieder.

TS
quelle
0

Ich hatte das gleiche Problem und habe die neueste Version von Microsoft Visual Studio Community 2017 Version 15.7.3

Ich habe gerade das neueste SDK 2.1 heruntergeladen und kein Targeting-Problem mehr. https://www.microsoft.com/net/download/thank-you/dotnet-sdk-2.1.301-windows-x64-installer

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

Installierte Version: Community

C # Tools 2.8.3-beta6-62923-07. Commit-Hash: 7aafab561e449da50712e16c9e81742b8e7a2969 In der IDE verwendete C # -Komponenten. Abhängig von Ihrem Projekttyp und Ihren Einstellungen kann eine andere Version des Compilers verwendet werden.

Allgemeine Azure-Tools 1.10 Bietet allgemeine Dienste zur Verwendung durch Azure Mobile Services und Microsoft Azure Tools.

NuGet Package Manager 4.6.0 NuGet Package Manager in Visual Studio. Weitere Informationen zu NuGet finden Sie unter http://docs.nuget.org/. .

ProjectServicesPackage-Erweiterung 1.0 ProjectServicesPackage Visual Studio-Erweiterung Detaillierte Informationen

ResourcePackage-Erweiterung 1.0 ResourcePackage Visual Studio-Erweiterung Detaillierte Informationen

Visual Basic Tools 2.8.3-beta6-62923-07. Commit-Hash: 7aafab561e449da50712e16c9e81742b8e7a2969 In der IDE verwendete Visual Basic-Komponenten. Abhängig von Ihrem Projekttyp und Ihren Einstellungen kann eine andere Version des Compilers verwendet werden.

Visual Studio Code-Debug-Adapter-Hostpaket 1.0 Interop-Schicht zum Hosten von Visual Studio-Code-Debug-Adaptern in Visual Studio

Visual Studio-Tools für Unity 3.7.0.1 Visual Studio-Tools für Unity

islandTraderFX
quelle
0

Stellen Sie sicher, dass Sie das x86 SDK anstelle des x64 SDK für Visual Studio herunterladen.

juFo
quelle
0

Ich hatte das gleiche Problem wie das aktuelle .NET SDK, das das Targeting von .NET Core 3.1 nicht unterstützt. Wählen Sie entweder .NET Core 1.1 oder niedriger aus oder verwenden Sie eine Version des .NET SDK, die .NET Core 3.1 unterstützt

1) Stellen Sie sicher, dass das .Net Core SDK auf Ihrem Computer installiert ist. Laden Sie .NET herunter !

2) Stellen Sie die Umgebungsvariablen PATH wie folgt ein: Pfad

Arjun Dasari
quelle
0

Ich hatte dieses Problem beim Versuch, meine Lösung in TFS zu erstellen. Wir haben die Aufgabe "Dot Net Publish" verwendet. Mit msbuild haben wir das Eis gebrochen.

Potatojaisiladki
quelle