Das aktuelle .NET SDK unterstützt das Targeting von .NET Core 2.1 nicht. Wählen Sie entweder .NET Core 2.0 oder niedriger aus oder verwenden Sie ein .NET SDK, das .NET Core 2.1 unterstützt

80

habe versucht, ein Upgrade auf die professionelle Version von Visual Studio 2017 v 15.6.0 (Vorschau 7.0) durchzuführen.

und installierte Aspnetcore-Runtime-2.1.0-Preview1-Final-Win-X64 und .net Core SDK 2.1.4.

Beim Erstellen einer neuen Webanwendung wird eine Fehlermeldung angezeigt

"Das aktuelle .NET SDK unterstützt das Targeting von .NET Core 2.1 nicht. Entweder das Targeting von .NET Core 2.0 oder niedriger oder eine Version des .NET SDK, die .NET Core 2.1 unterstützt."

Wenn ich versuche, ein vorhandenes Projekt zu erstellen, wird eine Fehlermeldung angezeigt

"Das aktuelle .NET SDK unterstützt das Targeting von .NET Core 2.1 nicht. Entweder das Targeting von .NET Core 2.0 oder niedriger oder eine Version des .NET SDK, die .NET Core 2.1 unterstützt."

Ich sehe ".net Core 2.1" nicht in meinem Zielframework

Ich habe keine global.json-Datei auf meinem Computer

Wenn ich dotnet --info versuche, bekomme ich das

c: \ source \ dnacloud \ testapp> dotnet --info .NET-Befehlszeilentools (2.1.100)

Product Information:
Version: 2.1.100
Commit SHA-1 hash: b9e74c6

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

Microsoft .NET Core Shared Framework Host

Version : 2.0.5
Build : 17373eb129b3b05aa18ece963f8795d65ef8ea54
user8559109
quelle
1
Dies ist auf dem neuesten Stand, jede 15.x.0 VS-Version ist vom Design her agil kaputt. Die Problemumgehung riecht nicht richtig. Es ist ziemlich wichtig, Hilfe> Feedback senden> Problem melden zu verwenden, da dies sonst nicht früh genug behoben wird.
Hans Passant
7
"durch Design gebrochen" == schlechtes Design. Ich verstehe, dass MS schnell bereitstellen möchte, aber die Abhängigkeitshölle, die sie wieder in die Entwicklungslandschaft
einführen,

Antworten:

68

Das Problem hierbei ist, dass Microsoft viele Leute mit der Nummerierung ihrer .NET Core SDKs verwechselt hat.

In der Nachricht des Originalplakats scheint der Pfad C: \ Programme \ dotnet \ sdk \ 2.1.100 \ NICHT die .NET Core 2.1-Laufzeit darzustellen (aber Sie würden denken, dass dies der Fall ist).

Ich bin auf diesen Beitrag gestoßen. Das aktuelle .NET SDK unterstützt kein Targeting von .NET Core 2.1 auf Developercommunity.visualstudio.com, wo eine Microsoft-Support-Person die Verwirrung erklärt:

"Vielen Dank für Ihr Feedback! Wir haben festgestellt, dass dieses Problem kein Fehler ist. Das erste SDK mit .NET Core 2.1-Unterstützung ist 2.1.300-Vorschau1. Wir wissen, dass die Versionierung verwirrend ist, weshalb ab 2.1.300 das major.minor-Versionen des SDK werden jetzt auch an den major.minor-Versionen der Laufzeit ausgerichtet. "

Also ... um .NET Core 2.1-Unterstützung für das Erstellen über das SDK zu erhalten, müssen Sie das SDK mindestens mit Version 2.1.300 installieren (da 2.1.2 NICHT .NET Core 2.1 ist) ... ja, verwirrend. Vielen Dank an Microsoft für die verlorene Zeit.

Cristian Satnic
quelle
22
"Wir haben festgestellt, dass dieses Problem kein Fehler ist" Ich würde dies einen Fehler nennen.
Script Kitty
2
"Wir haben festgestellt, dass dies peinlich ist, also werden wir es nicht als Fehler bezeichnen."
Chris B. Behrens
- es sieht schlecht aus.
Christian
29

Dies geschah mir nach der Installation von 2.2.100-Preview3-009430 und dem anschließenden Update auf Visual Studio 15.9.2.

Ich habe das Problem gelöst, indem ich die Option "Vorschau des .NET Core SDK verwenden" aktiviert habe.

  1. Gehen Sie zu: Extras> Optionen> Projekte und Lösungen> .NET Core

  2. Aktivieren Sie das Kontrollkästchen "Vorschau des .NET Core SDK verwenden"

  3. Starten Sie Visual Studio neu und erstellen Sie die Lösung neu.

VS-Vorschauoptionen

Dan Korycinski
quelle
Was ist auf einem Build-Server, auf dem nur "Build-Tools" installiert sind? Es gibt dort keine GUI.
springy76
1
Arbeitete für NETSDK1045 Das aktuelle .NET SDK unterstützt das Targeting von .NET Core 3.0 nicht. beim Ausprobieren von Blazor
Vamsi J
1
Es gibt keine solche Option in der VS v.16.1
Eugene Maksimov
8
Es wurde zu
Extras
18

Die Installation .NET Core SDK 2.1.300-preview2hat den Trick für mich getan:

UPDATE: Nur für den Fall, dass es eine neuere Version gibt, wurde kürzlich veröffentlicht. Sie können das neue .NET Core SDK für 2.2.0-Vorschau1 (einschließlich ASP.NET 2.2.0-Vorschau1) hier herunterladen .

Siehe auch diese Antwort, wenn Sie im Allgemeinen einen Fehler wie diesen erhalten:

Das aktuelle .NET SDK unterstützt das Targeting von .NET Core 2.X nicht

Dmitry Pavlov
quelle
Meine Lösung wird nicht erstellt, aber jetzt spuckt IIS Express diesen Fehler aus. 'MACHINE / WEBROOT / APPHOST / ORCHARDCORE.CMS.WEB' mit dem physischen Stammverzeichnis 'C: \ Projects \ OrchardCore \ src \ OrchardCore.Cms.Web \' konnte den Prozess nicht starten mit der Befehlszeile "C: \ Programme (x86) \ Microsoft Visual Studio \ 2017 \ Community \ Common7 \ IDE \ Erweiterungen \ Microsoft \ Web Tools \ ProjectSystem \ VSIISExeLauncher.exe -argFile" C: \ Benutzer \ daves \ AppData \ Local \ Temp \ tmp221C.tmp "', ErrorCode =' 0x80004005: 0.
David Sopko
@ DavidSopko höchstwahrscheinlich müssen Sie sich um Umgebungsvariablen LAUNCHER_PATH und LAUNCHER_ARGS blog.lextudio.com/…
Dmitry Pavlov
13

Ich habe das Problem gelöst. Die Ursache war, dass ich installiert habe

  • aspnetcore-runtime-2.1.0-preview1-final-win-x64 und
  • .net core SDK 2.1.4-x64 Versionen.
  • Bei der Installation wurden die SDK-Dateien abgelegt c:\Program Files\dotnet
  • aber VS2017 32bit suchte nach den SDK-Dateien in c:\Program Files(x86)\dotnet.

Um dies zu lösen i

  • installierte die x86-Version der SDK- und Aspnetcore-Laufzeit,

  • Legen Sie die Umgebungsvariable MSBuildSDKsPath so fest, dass sie auf den neuen Installationspfad verweist.

  • löschte alle veralteten SDKS aus dem Control Panel

Die Frage VS2017 Update 3 'Microsoft.NET.Sdk.Web' konnte nicht gefunden werden , um dieses Problem zu beheben .

user8559109
quelle
Ich stehe vor dem gleichen Problem und habe aspnetcore-runtime-2.1.0-template1-final-win-x64 wahrscheinlich irgendwo im letzten Monat installiert . Ich erinnere mich nicht, von wo ich überhaupt installiert habe und konnte nicht einmal einen Link sehen, der jetzt für einen solchen Download verfügbar ist (in der Hoffnung, dass auf dieser Seite dieses Problem besprochen wird). Woher haben Sie die x86-Version installiert? Können Sie Ihrer Antwort eine weitere Beschreibung hinzufügen, da dies ein häufiges Problem zu sein scheint?
rahulaga_dev
1
@RahulAgarwal Etwas spät zum Spiel, aber wenn Sie immer noch nicht die richtige Download-Seite gefunden haben, ist dies: microsoft.com/net/download/windows Klicken Sie auf den x86-Download- Link.
Carsten Gehling
11

https://www.microsoft.com/net/download/visual-studio-sdks

Sie können das SDK von der oben genannten Website herunterladen

Überprüfen Sie das SDK in Ihrem Computer. Pfad C: \ Programme \ dotnet \ sdk

Ändern oder überprüfen Sie das Ziel-Framework in Visual Studio.

Klicken Sie mit der rechten Maustaste auf Startanwendung oder Projekt => Anwendung => Zielframework.

Sie können das Framework ändern, die Lösung erstellen und Nugget-Pakete wiederherstellen.

Geben Sie hier die Bildbeschreibung ein

GirishBabuC
quelle
Ich habe den OP-Fehler nach dem Hinzufügen eines .NET Core-Projekts (Class Library) erhalten. Es stellte sich heraus, dass das Ziel-Framework nicht standardmäßig festgelegt war. Ich musste es also nur aus der Dropdown-Liste auswählen und speichern, Problem behoben.
jhhwilliams
7

Das gleiche ist mir passiert, aber dann für Version 2.2 von .NET Core. Ich habe die neueste Version von .NET Core 2.2 SDK installiert, die zu diesem Zeitpunkt 2.2.202 war. Mit Visual Studio konnte ich ein neues Projekt für Core 2.2 erstellen, aber es zeigte den Fehler:

"Das aktuelle .NET SDK unterstützt nicht das Targeting von .NET Core 2.2. Entweder das Targeting von .NET Core 2.1 oder niedriger oder eine Version des .NET SDK, die .NET Core 2.2 unterstützt."

Das Ziel-Framework für mein Projekt war leer und in der Dropdown-Liste wurde 2.2 nicht angezeigt.

Nach der Installation von .NET Core SDK 2.2.103 war der Fehler behoben und in der Dropdown-Liste wurde ".NET Core 2.2" angezeigt.

Jamie
quelle
2

Das Beenden von IIS zum Veröffentlichen löste das Problem. Aber zuerst musste ich das Net Core 2.1 SDK installieren und das Visual Studio aktualisieren.

Ongun23
quelle
2

Ich hatte das .Net Core SDK 2.1.4 installiert und folgte den anderen Antworten in diesem Beitrag, ohne mein Problem zu lösen. Was es schließlich für mich getan hat, war die Installation von .Net Core SDK Version 2.1.301 und die Deinstallation jeder anderen Version. Das SDK 2.1.4 scheint nicht auf .Net Core 2.1 abzielen zu können, aber das SDK 2.1.301 erledigt den Job.

Sanfalero
quelle
Bedeutet dies, dass Visual Studio SDK 2.1.401 nicht verwendet, selbst wenn es neben 2.1.301 installiert ist?
Bart VdA
2

Stellen Sie sicher, dass sich global.jsonin Ihrem Projektstammordner keine Datei befindet, die Ihr Projekt dazu zwingt, nur .NET SDK 2.1 zu verwenden.

Wenn Sie über diese Datei global.json verfügen, löschen Sie sie und starten Sie Visual Studio neu.

So peinlich es auch klingen mag, ich habe fast eine Stunde lang gebastelt und sogar mehrere SDK-Versionen heruntergeladen, um die Verwendung von 2.2 zu erzwingen

Rosdi Kasim
quelle
2

Ich habe das Problem auch folgendermaßen gelöst:

Überprüfen Sie die verfügbaren Versionen auf dotnet sdk

C:\Users\me>dotnet --list-sdks

 ##2.1.202 [C:\Program Files\dotnet\sdk]
 ##2.1.505 [C:\Program Files\dotnet\sdk]
 ##2.1.508 [C:\Program Files\dotnet\sdk]
 ##2.1.509 [C:\Program Files\dotnet\sdk]
 ##2.1.511 [C:\Program Files\dotnet\sdk]
 ##2.1.514 [C:\Program Files\dotnet\sdk]
 ##2.1.801 [C:\Program Files\dotnet\sdk]

Ich habe meinen Build auf all diesen Versionen getestet und er funktioniert erst, wenn ich alle oben genannten Versionen von Programme und Funktionen deinstalliert habe. Dann laden Sie vom neuesten herunter:

https://dotnet.microsoft.com/download/dotnet-core/thank-you/sdk-3.1.300-windows-x64-installer

Das hat funktioniert. Verschwenden Sie keine Zeit, da ich gerade die neueste Version von dotnet sdk installiert habe und Sie können loslegen. ""

Tawanda Ziki
quelle
1

Ich benutze Rider, das hatte ich

Das aktuelle .NET SDK unterstützt das Targeting von .NET Core 2.2 nicht. Wählen Sie entweder .NET Core 2.1 oder niedriger aus oder verwenden Sie eine Version des .NET SDK, die .NET Core 2.2 unterstützt

Ich hatte:

$ dotnet --list-sdks
2.1.2 [C:\Program Files\dotnet\sdk]
2.1.202 [C:\Program Files\dotnet\sdk]
2.1.505 [C:\Program Files\dotnet\sdk]
2.1.602 [C:\Program Files\dotnet\sdk]
2.2.202 [C:\Program Files\dotnet\sdk]

Ich habe versucht, nur das neueste SDK zu behalten und hatte:

Laden des Projekts 'WebApplication3' fehlgeschlagen: Das angegebene SDK 'Microsoft.NET.Sdk.Web' wurde nicht gefunden.

Also habe ich alles entfernt und 2.1.602 neu installiert. Ein neues Projekt von Rider gemacht. Und es hat funktioniert . Ich kann nicht sagen, dass ich verstanden habe, wie ich es gelöst habe ...

Die Probleme für einige Völker scheinen mit global.json verbunden zu sein, siehe:
- https://docs.microsoft.com/fr-fr/aspnet/core/migration/21-to-22?view=aspnetcore-2.2&tabs= Visual-Studio
- https://docs.microsoft.com/fr-fr/dotnet/core/tools/global-json
- https://andrewlock.net/the-sdk-microsoft-net-sdk-web-specified- konnte nicht gefunden werden/

Andere Dinge, die ich zuvor getan habe (die das Problem nicht zu lösen
schienen, aber vielleicht geholfen haben?): - Aktualisierung von Rider von 2018.3.2 auf 2018.3.4 (spätestens). - Installation von Mono (wurde bei Verwendung der Rider-Build-Einstellungen von Unity verwendet).
- Es wurde erfolglos versucht, benutzerdefiniertes MSBuild von Jetbrain (das für Linux verwendete) zu verwenden.
- Installieren von allem, was mit .NET Core zu tun hat, vom VS-Installationsprogramm.
- Aktualisieren Sie die VS-Community auf dem neuesten Stand. - Neustart.

In habe Rider/Build, Execution, Deployement/Toolset and Buildich jetzt:
Mono ausführbare Datei: C:\Program Files\Mono\bin\mono.exe
- NET Core CLI ausführbare Datei: C:\Program Files\dotnet\dotnet.exe
- MS Build-Version verwenden (Auto erkannt 16.0):C:\Program - Files\dotnet\sdk\2.1.602\MSBuild.dll

Ambroise Rabier
quelle
Ich bin mir ziemlich sicher, dass es mit der letzten Zeile Ihres Beitrags zu tun hat: Also, welche MSBuild-Version Rider tatsächlich verwendet. Es muss auf dasjenige verweisen, das vom neuesten .NET Core SDK bereitgestellt wird, das Sie verwenden möchten. Andernfalls stimmt etwas nicht und Sie müssen das SDK neu installieren ...
rsenna
0

Ich habe diesen Fehler erhalten, nachdem ich SDK 2.2.300 installiert habe. Nachdem ich diesen und einige andere Beiträge gelesen habe, habe ich ein Downgrade auf SDK 2.2.1xx durchgeführt und der Fehler ist behoben . Hinweis: Ich musste SDK 2.2.300 deinstallieren und nach der Installation von SDK 2.2.1xx neu starten.

Johnny Chu
quelle
0

Ich hatte dieses Problem und habe VS2017 neu installiert. Das hat es behoben!

Paul Lewallen
quelle
0

Gehen Sie zu Ihrer Pipeline. Klicken Sie auf Pipeline bearbeiten. Klicken Sie auf die Dropdown-Liste Agentenspezifikation. Ändern Sie es in Windows 2019. Klicken Sie auf Speichern und in die Warteschlange.

Und los geht's. Es hat gut funktioniert für mich.

Mashal Aman
quelle
-1

Es sieht so aus, als würde Microsoft die frühen Anwender der neuesten Entwicklungssoftware in Net Core 2.1 zu einer besseren Codierungspraxis ermutigen, indem es die Möglichkeit aufhebt, ältere Software zu verwenden, wenn schlechte Gewohnheiten vorherrschen. Net Core 2.0 und die älteren Versionen sind fast am Ende ihrer Lebensdauer und sollten daher überhaupt nicht verwendet werden. ( https://blogs.msdn.microsoft.com/dotnet/2018/06/20/net-core-2-0-will-reach-end-of-life-on-september-1-2018/ )

1) Microsoft hat ServiceLocator entfernt, da es allgemein als Anti-Pattern angesehen wird, was zu schwer verständlichem Code führt.

2) Um MVC-Anwendungen zu verbessern, wurde der AccountController aus der Authentifizierung / Autorisierung entfernt, um die Verwendung von Razor-Seiten zu fördern, die das Prinzip der Einzelverantwortung implementieren.

Es wird nicht als bewährte Methode angesehen, diese Änderungen zu umgehen, um die Aufrechterhaltung von Software zu erhöhen, die in der Vergangenheit entwickelt wurde, um die Standards für das Software-Engineering zu senken.

Lance Parkington
quelle