Bieżący zestaw .NET SDK nie obsługuje platformy .NET Core 2.1. Docelowy .NET Core 2,0 lub niższy albo użyj zestawu .NET SDK, który obsługuje .NET Core 2.1

81

próbowałem uaktualnić do profesjonalnej wersji programu Visual Studio 2017 v 15.6.0 (wersja zapoznawcza 7.0)

i zainstalowano aspnetcore-runtime-2.1.0-preview1-final-win-x64 oraz .net core SDK 2.1.4.

Podczas tworzenia nowej aplikacji internetowej pojawia się komunikat o błędzie

„Bieżący zestaw .NET SDK nie obsługuje platformy .NET Core 2.1. Docelowa platforma .NET Core 2.0 lub starsza albo użyj wersji zestawu .NET SDK, która obsługuje .NET Core 2.1.”

Kiedy próbuję zbudować istniejący projekt, pojawia się błąd

„Bieżący zestaw .NET SDK nie obsługuje platformy .NET Core 2.1. Docelowa platforma .NET Core 2.0 lub starsza albo użyj wersji zestawu .NET SDK, która obsługuje .NET Core 2.1.”

Nie widzę pliku „.net core 2.1” w moim docelowym frameworku

Nie mam pliku global.json na moim komputerze

Kiedy próbuję dotnet - info, otrzymuję to

c: \ source \ dnacloud \ testapp> dotnet --info. Narzędzia wiersza polecenia .NET (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
źródło
1
To jest krwawa rzecz, każda wersja 15.x.0 VS jest zręcznie zepsuta zgodnie z projektem. Obejście nie pachnie poprawnie. Bardzo ważne jest, aby skorzystać z opcji Pomoc> Prześlij opinię> Zgłoś problem, w przeciwnym razie problem nie zostanie wkrótce rozwiązany.
Hans Passant
7
„zepsuty projekt” == zły projekt. Rozumiem, że MS chce się szybko wdrożyć, ale piekło zależności, które ponownie wprowadzają do środowiska programistycznego, przypomina mi próbę zbudowania kodu na jądrach Linuksa w latach 90-tych ...
Jeremy Holovacs

Odpowiedzi:

69

Problem polega na tym, że firma Microsoft pomyliła wiele osób ze sposobem numerowania swoich zestawów SDK .NET Core.

W oryginalnym komunikacie nadawcy ścieżka C: \ Program Files \ dotnet \ sdk \ 2.1.100 \ NIE wydaje się reprezentować środowiska uruchomieniowego .NET Core 2.1 (ale można by pomyśleć, że tak).

Natknąłem się na ten post Bieżący zestaw .NET SDK nie obsługuje platformy .NET Core 2.1 w witrynie developercommunity.visualstudio.com, gdzie osoba pomocy technicznej firmy Microsoft wyjaśnia problem:

„Dziękujemy za opinię! Ustaliliśmy, że ten problem nie jest błędem. Pierwszy zestaw SDK z obsługą .NET Core 2.1 to 2.1.300-Preview1. Wiemy, że przechowywanie wersji jest mylące, dlatego począwszy od wersji 2.1.300 Wersje major.minor zestawu SDK zostaną teraz wyrównane z wersjami major.minor środowiska wykonawczego. "

A więc ... aby uzyskać obsługę .NET Core 2.1 do tworzenia za pośrednictwem zestawu SDK, musisz zainstalować zestaw SDK z wersją co najmniej 2.1.300 (ponieważ 2.1.2 NIE jest .NET Core 2.1) ... tak, mylące. Dziękuję Microsoft za stracony czas.

Cristian Satnic
źródło
22
„Ustaliliśmy, że ten problem nie jest błędem” Nazwałbym to błędem.
Script Kitty
2
„Ustaliliśmy, że to żenujące, więc nie będziemy nazywać tego błędem”.
Chris B. Behrens
- źle wygląda.
Christian,
29

Zdarzyło mi się to po zainstalowaniu 2.2.100-preview3-009430, a następnie aktualizacji do Visual Studio 15.9.2.

Rozwiązałem, włączając opcję „Użyj podglądów zestawu .NET Core SDK”.

  1. Przejdź do: Narzędzia> Opcje> Projekty i rozwiązania> .NET Core

  2. Zaznacz pole „Użyj podglądów zestawu .NET Core SDK”

  3. Uruchom ponownie program Visual Studio i ponownie skompiluj rozwiązanie.

Opcje podglądu VS

Dan Korycinski
źródło
Co na serwerze kompilacji, który ma zainstalowane tylko „narzędzia do budowania”? Nie ma tam GUI.
springy76
1
Pracował dla NETSDK1045 Bieżący zestaw .NET SDK nie obsługuje platformy .NET Core 3,0. podczas wypróbowywania blazora
Vamsi J
2
W VS 16.1 nie ma takiej opcji
Eugene Maksimov
9
Został przeniesiony do Narzędzia> Opcje> Środowisko> Funkcje podglądu
Ludwo
18

Instalacja .NET Core SDK 2.1.300-preview2załatwiła mi sprawę:

AKTUALIZACJA: na wszelki wypadek niedawno została wydana nowsza wersja. Możesz pobrać nowy zestaw .NET Core SDK dla wersji 2.2.0-Preview1 (który obejmuje ASP.NET 2.2.0-preview1) tutaj .

Zobacz również tę odpowiedź, gdy generalnie otrzymujesz taki błąd:

Bieżący zestaw .NET SDK nie obsługuje platformy .NET Core 2.X.

Dmitrij Pawłow
źródło
Moje rozwiązanie nie jest budowane, ale teraz IIS Express wypluwa ten błąd „MACHINE / WEBROOT / APPHOST / ORCHARDCORE.CMS.WEB” z fizycznym katalogiem głównym „C: \ Projects \ OrchardCore \ src \ OrchardCore.Cms.Web \” nie uruchomił się procesu z wierszem polecenia „C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Community \ Common7 \ IDE \ Extensions \ Microsoft \ Web Tools \ ProjectSystem \ VSIISExeLauncher.exe -argFile" C: \ Users \ daves \ AppData \ Local \ Temp \ tmp221C.tmp "', ErrorCode =' 0x80004005: 0
David Sopko
@DavidSopko najprawdopodobniej musisz zadbać o zmienne środowiskowe LAUNCHER_PATH i LAUNCHER_ARGS blog.lextudio.com/…
Dmitry Pavlov
13

Rozwiązałem problem. przyczyną było to, że zainstalowałem

  • aspnetcore-runtime-2.1.0-preview1-final-win-x64 i
  • .net core SDK 2.1.4-x64 wersje.
  • Instalacja umieściła pliki sdk w c:\Program Files\dotnet
  • ale VS2017 32bit szukał plików sdk w formacie c:\Program Files(x86)\dotnet.

Aby rozwiązać ten problem i

  • zainstalowałem wersję x86 środowiska uruchomieniowego sdk i aspnetcore,

  • ustaw zmienną środowiskową MSBuildSDKsPath, aby wskazywała nową ścieżkę instalacji.

  • usunięto wszystkie przestarzałe pakiety SDK z panelu sterowania

Nie można znaleźć pytania o aktualizację 3 VS2017 „Microsoft.NET.Sdk.Web” w rozwiązaniu tego problemu.

user8559109
źródło
Mam ten sam problem i zainstalowałem aspnetcore-runtime-2.1.0-preview1-final-win-x64 prawdopodobnie gdzieś w zeszłym miesiącu. Nie pamiętam, skąd w ogóle zainstalowałem i nie widziałem żadnego łącza, które jest teraz dostępne do takiego pobrania (mam nadzieję, że ta strona może omówić ten problem). Skąd zainstalowałeś wersję x86? Czy możesz dodać więcej opisu do swojej odpowiedzi, ponieważ wydaje się to powszechny problem.
rahulaga_dev
1
@RahulAgarwal Trochę za późno w grze, ale jeśli nadal nie znalazłeś odpowiedniej strony pobierania, jest to: microsoft.com/net/download/windows Kliknij łącze pobierania x86 .
Carsten Gehling
12

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

Możesz pobrać SDK z powyższej witryny

sprawdź zestaw SDK, który znajduje się w ścieżce komputera C: \ Program Files \ dotnet \ sdk

Zmień lub sprawdź docelowy framework w Visual Studio,

Kliknij prawym przyciskiem myszy na Startup Application or project => Application => Target Framework.

Możesz zmienić strukturę i skompilować rozwiązanie oraz przywrócić pakiety użytkowe.

wprowadź opis obrazu tutaj

GirishBabuC
źródło
Otrzymałem błąd OP po dodaniu projektu biblioteki klas (.NET Core). Okazuje się, że framework Target nie był ustawiony domyślnie, więc wszystko, co musiałem zrobić, to wybrać go z listy rozwijanej i zapisać, a problem został rozwiązany.
jhhwilliams
7

To samo stało się ze mną, ale w wersji 2.2 programu .NET Core. Zainstalowałem najnowszą wersję .NET Core 2.2 SDK, która była w tamtym czasie 2.2.202. Visual studio pozwoliło mi stworzyć nowy projekt dla Core 2.2, ale pokazywał błąd:

„Bieżący zestaw .NET SDK nie obsługuje platformy .NET Core 2.2. Docelowa wersja platformy .NET Core 2.1 lub starszej albo użyj wersji zestawu .NET SDK obsługującej platformę .NET Core 2.2”.

Platforma docelowa mojego projektu była pusta, a lista rozwijana nie pokazywała 2.2.

Po zainstalowaniu .NET Core SDK 2.2.103 błąd zniknął, a na liście rozwijanej pojawił się „.NET Core 2.2”.

jamie
źródło
2

Zatrzymanie usług IIS w celu opublikowania rozwiązało problem. Najpierw jednak musiałem zainstalować zestaw SDK net core 2.1 i zaktualizować Visual Studio.

Ongun23
źródło
2

Miałem zainstalowany .Net Core SDK 2.1.4 i postępowałem zgodnie z innymi odpowiedziami w tym poście bez rozwiązania mojego problemu. Ostatecznie dla mnie zainstalowałem .Net Core SDK w wersji 2.1.301 i odinstalowałem wszystkie inne wersje. Wygląda na to, że SDK 2.1.4 nie jest przeznaczony dla .Net Core 2.1, ale SDK 2.1.301 spełnia swoje zadanie.

sanfalero
źródło
Czy to oznacza, że ​​program Visual Studio nie używa zestawu SDK 2.1.401, nawet jeśli jest zainstalowany obok wersji 2.1.301?
Bart VdA
2

Sprawdź, czy nie masz global.json w folderze głównym projektu pliku, który zmusza projekt do korzystania tylko z zestawu .NET SDK 2.1.

Jeśli masz ten plik global.json, usuń go , a następnie uruchom ponownie program Visual Studio.

Choć może to zabrzmieć żenująco, spędziłem prawie godzinę na majsterkowaniu, a nawet pobrałem kilka wersji SDK, aby zmusić go do używania 2.2

Rosdi Kasim
źródło
2

Problem też rozwiązałem w ten sposób:

Sprawdź dostępne wersje na 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]

Przetestowałem moją kompilację na wszystkich tych wersjach i nie działa, dopóki nie odinstaluję wszystkich powyższych z programów i funkcji. Następnie pobierz najnowsze:

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

To zadziałało. Nie trać czasu, tak jak po prostu zainstalowałem najnowszą wersję dotnet sdk i gotowe. "

Tawanda Ziki
źródło
1

Używam Ridera, który miałem

Bieżący zestaw .NET SDK nie obsługuje platformy .NET Core 2.2. Docelowy .NET Core 2.1 lub niższy albo użyj wersji zestawu .NET SDK, która obsługuje .NET Core 2.2

Miałem:

$ 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]

Próbowałem zachować tylko najnowszy pakiet SDK i miałem:

Ładowanie projektu „WebApplication3” nie powiodło się: nie można znaleźć określonego zestawu SDK „Microsoft.NET.Sdk.Web”.

Usunąłem więc wszystko i ponownie zainstalowałem 2.1.602. Zrobiłem nowy projekt od Ridera. I zadziałało . Nie mogę powiedzieć, że zrozumiałem, jak to rozwiązałem ...

Wydaje się, że problemy niektórych narodów są powiązane z global.json, patrz:
- 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- nie znaleziono/

Inne rzeczy, które zrobiłem wcześniej (to nie wydawało się rozwiązać problemu, ale mogło pomóc?):
- Aktualizacja Ridera z 2018.3.2 do 2018.3.4 (najnowsza). - Instalowanie Mono (użyłem tego z Unity, kiedy patrzyłem na ustawienia kompilacji Ridera).
- Próbowano użyć niestandardowego programu MSBuild firmy Jetbrain (tego używanego w systemie Linux) bez powodzenia.
- Instalowanie wszystkiego związanego z .NET Core z instalatora VS.
- Zaktualizuj społeczność VS. - Restart.

W Rider/Build, Execution, Deployement/Toolset and BuildMam teraz:
Plik wykonywalny mono: C:\Program Files\Mono\bin\mono.exe
- Plik wykonywalny NET Core CLI: C:\Program Files\dotnet\dotnet.exe
- Użyj wersji MS Build (wykryto automatycznie 16.0):C:\Program - Files\dotnet\sdk\2.1.602\MSBuild.dll

Ambroise Rabier
źródło
Jestem prawie pewien, że ma to związek z ostatnim wierszem twojego postu: czyli z której wersji MSBuild Rider faktycznie korzysta. Musi wskazywać ten dostarczony przez najnowszy zestaw .NET Core SDK, którego chcesz użyć; inaczej coś jest nie tak i musisz przeinstalować SDK ...
rsenna
0

Zacząłem otrzymywać ten błąd po zainstalowaniu SDK 2.2.300. Po przeczytaniu tego posta i kilku innych obniżyłem go do SDK 2.2.1xx i błąd zniknął. Uwaga: musiałem odinstalować SDK 2.2.300 i ponownie uruchomić po zainstalowaniu SDK 2.2.1xx.

Johnny Chu
źródło
0

Miałem ten problem i wykonałem nową instalację VS2017. To naprawiło!

Paul Lewallen
źródło
0

Idź do swojego rurociągu. Kliknij Edytuj potok. Kliknij listę rozwijaną Specyfikacja agenta. Zmień go na Windows 2019. Kliknij Zapisz i ustaw w kolejce.

I gotowe. U mnie to zadziałało.

Mashal Aman
źródło
-1

Wygląda na to, że Microsoft zachęca do lepszych praktyk kodowania dla tych pierwszych użytkowników najnowszego oprogramowania deweloperskiego w Net Core 2.1, usuwając możliwość korzystania ze starszego oprogramowania, w którym dominują złe nawyki. Net Core 2.0 i starsze wersje zbliżają się do końca, więc nie powinny być w ogóle używane. ( https://blogs.msdn.microsoft.com/dotnet/2018/06/20/net-core-2-0-will-reach-end-of-life-on-september-1-2018/ )

1) Firma Microsoft usunęła ServiceLocator, ponieważ jest powszechnie uważana za anty-wzorzec, który powoduje trudny do zrozumienia kod.

2) Aby ulepszyć aplikacje MVC, AccountController został usunięty z uwierzytelniania / autoryzacji, aby zachęcić do korzystania ze stron Razor, które implementują zasadę Single Responsibiity.

Nie byłoby uważane za najlepszą praktykę omijanie tych zmian w celu zwiększenia trwałości oprogramowania zbudowanego w przeszłości zgodnie z niższymi standardami inżynierii oprogramowania.

Lance Parkington
źródło