Bieżący zestaw .NET SDK nie obsługuje błędu .NET Standard 2.0 w programie Visual Studio 2017, aktualizacja 15.3

119

Chcę utworzyć projekt biblioteki klas z Target Framework .NET Standard 2.0.

Zaktualizowałem moją Visual Studio 2017wersję do wersji, 15.3a także w instalatorze Visual Studio sprawdziłem .NET Framework 4.7 SDKi.NET Framework 4.7 targeting pack ręcznie i zainstalowałem je.

Nadal nie ma .NET Standard 2.0opcji w polu kombi Platforma docelowa w oknie Projekt / Aplikacja. Więc zmieniłem tag TargetFramework w .csprojpliku ręcznie na netstandard2.0, ale po próbie kompilacji otrzymuję ten błąd:

Bieżący zestaw .NET SDK nie obsługuje platformy .NET Standard 2.0. Docelowy .NET Standard 1.6 lub starszy albo użyj wersji .NET SDK, która obsługuje .NET Standard 2.0.

sahar
źródło
4
Czy masz global.jsonplik przypinający zestaw .NET Core SDK do wersji 1.x? Czy oddzielnie zainstalowano zestaw .NET Core 2.0 SDK? ( Spodziewałbym się, że zostanie dołączony do VS, ale i tak nie zaszkodzi zainstalować go.)
Jon Skeet
1
@JonSkeet instalowanie zestawu .NET Core 2.0 SDK oddzielnie działało. Będzie dobrze, jeśli dodasz tutaj swoją sugestię jako odpowiedź.
sahar

Odpowiedzi:

144

Wygląda na to, że zainstalowanie aktualizacji VS2017 dla tej konkretnej wersji nie spowodowało również zainstalowania zestawu SDK .NET Core 2.0. Możesz to pobrać tutaj .

Aby sprawdzić, którą wersję pakietu SDK masz już zainstalowaną, uruchom

dotnet --info

z wiersza poleceń. Zwróć uwagę, że jeśli global.jsonplik znajduje się w Twoim bieżącym katalogu roboczym lub w dowolnym katalogu nadrzędnym, zastąpi to uruchomioną wersję SDK. (Jest to przydatne, jeśli na przykład chcesz wymusić określoną wersję projektu).

Sądząc po komentarzach, niektóre wersje VS2017 aktualizacjach zrobić zainstalować .NET rdzenia SDK. Podejrzewam, że z czasem może się nieco różnić.

Jon Skeet
źródło
1
@Marwie: Podejrzewam, że celujesz w netstandard2.0. Nie próbowałem celować w to za pomocą zestawu SDK 1.0, ale nie zdziwiłbym się, gdyby się nie udało. Oczywiście nadal możesz kierować reklamy na netstandard1.X za pomocą zestawu SDK 1.0.
Jon Skeet
6
Ok - jestem nowy w temacie - byłem zaskoczony bliskim związkiem między .net core a .net standardem - czy nie było powodem tworzenia standardu .net, aby pomijać takie zależności? Dlaczego nie zostałby wysłany w osobnej paczce?
Marwie
1
@Marwie: Cóż, .NET Core SDK jest niezależny od środowiska uruchomieniowego .NET Core, które jest niezależne od standardu .NET. Ale SDK „wie o” zestawie docelowych frameworków i nie dziwię się, że nie zadziała z przyszłym . To jak oczekiwanie, że Visual Studio 2013 skompiluje kod C # 7. Chociaż prawdopodobnie byłoby możliwe, aby firma MS zaprojektowała go tak, aby nie potrzebować zestawu .NET Core 2.0 SDK do kierowania na netstandard2.0, i tak byłoby to dziwnym przypadkiem użycia, IMO.
Jon Skeet,
3
Otrzymałem błąd po odinstalowaniu wszystkich zestawów SDK .net Core 1.x. Nadal miałem Microsoft. Zainstalowane .NET core SDK 2.0.2, 2.0.3, 2.1.1 i 2.1.2 oraz VS 2017 5.2. Kiedyś wykonałem ręczną instalację aktualnego Microsoft. .NET core SDK (2.1.3) Mogłem ponownie skompilować swoje projekty. Zastanawiam się, co przy usuwaniu zestawów SDK 1.x zepsuło zestawy 2.x SDK.
Programista SOHO
2
@Justin: OK, więc brzmi to tak, jakby SDK 2.1.4 nie został poprawnie zainstalowany lub masz plik global.json przypinający go do starej wersji.
Jon Skeet
20

podczas gdy powyższe odpowiedzi nie rozwiązały mojego problemu. W końcu rozwiązałem to, przechodząc do tego linku https://www.microsoft.com/net/download/visual-studio-sdks i pobierając wymagany pakiet SDK dla programu Visual Studio . To było naprawdę zagmatwane i nie rozumiem dlaczego, ale to rozwiązało mój problem

Johnny Camby
źródło
Nie mogę tego po prostu zagłosować, to również rozwiązało mój problem, ale mam nadzieję, że ktoś wyjaśni przyczynę tego działania.
Beytan Kurt
U mnie to rozwiązanie zadziałało. Dla mnie była to kwestia niekompatybilności z najnowszym SDK. Jeśli używasz programu Visual Studio 2017, nie możesz używać najnowszej wersji zestawu .NET Core SDK.
zero
11

Dla mnie rozwiązaniem była zmiana wersji w global.json aby odzwierciedlała zainstalowaną.

Jak powiedzieli inni, wersję można znaleźć uruchomioną dotnet --info w cmd

To:

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

Stał się:

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

Możesz również utworzyć plik global.json, uruchamiając

dotnet new globaljson --sdk-version 2.1.4

u podstaw projektu

lsp
źródło
2
Gdzie znalazłby się ten global.jsonplik, gdyby istniał?
Bruno Bieri
Myślę, że ms usunął ten plik, sprawdź swoje pliki .sln i .csproj :)
lsp,
2
Plik global.jsonbyłby obok pliku rozwiązania. Zwykle dołączałem jako element rozwiązania do samego rozwiązania. W swoich eksperymentach odkryłem, że bez zamykania i ponownego ładowania rozwiązania zmiana wersji w global.jsonmoże prowadzić do dziwnych błędów kompilacji. Mój komentarz dotyczy VS2018 w wersji 15.9.2 z .NET Core SDK 2.2.100.
Manfred,
Z dokumentów .NET Core SDK looks for a global.json file in the current working directory ... or one of its parent directories . Więc jak plik typu dziedziczenia.
StuartLC
10

Dzieje się tak czasami, gdy próbuję otworzyć moje stare projekty, co pomaga mi zmienić ramy docelowe projektów. Przejdź do Project -> projectname Properties ... i zmień platformę docelową na zainstalowaną. Właściwości projektu

H35am
źródło
Rozwijane menu nic dla mnie nie pokazuje. Jakieś pomysły?
Danny
9

To zadziałało dla mnie

Użyj instalacji programu Visual Studio

Na karcie „Obciążenia” zaznacz „Tworzenie międzyplatformowe .Net Core” i kliknij „Modyfikuj”

wprowadź opis obrazu tutaj

Nie zapomnij zaznaczyć „Narzędzia programistyczne .NET Core 2.0” w menu po lewej stronie.

Źródło

Uwaga

Zainstalowałem Asp Net Core wcześniej, ale nie pojawił się na moim Visual Studio, zaraz po zainstalowaniu za pomocą instalacji Visual Studio pojawił się u mnie.

Wictor Chaves
źródło
1
Alternatywnie możesz zainstalować to, czego potrzebujesz, tutaj: dotnet.microsoft.com/download/ ...
user2173353
3

Kiedy uaktualniłem Visual Studio do wersji 15.5.1, .Net Core SDK został uaktualniony do wersji 2.X, więc ten błąd zniknął. Kiedy biegnę dotnet --info, widzę teraz:

wprowadź opis obrazu tutaj

Johnny Oshika
źródło
3

Miałem to właśnie z 15.8.3 po odinstalowaniu niektórych zestawów SDK w wersji zapoznawczej .NET Core 1.x, moja aplikacja nie mogła się skompilować i pokazała błąd.

Naprawiono to, instalując najnowszą wersję zestawu SDK x86, mimo że korzystam z systemu Windows 10 x64.

Przypuszczam, że dzieje się tak, ponieważ VS 2017 nadal jest programem x86 i chociaż programy działają jako x64, kompilator szukał odpowiedniego zestawu SDK x86

Paul Hatcher
źródło
3

Miałem instalacje zarówno programu Visual Studio 2019, jak i 2017. Próbowałem oddzielnie zainstalować zestaw .NET Core 2.X SDK dla VS2017, ale bez powodzenia.

Problem w tym , że mam zainstalowany SDK .NET Core 3.0 jako domyślną wersję sdk , której VS2017 nie lubi.

Moje rozwiązanie polegało na zmianie wersji SDK dla konkretnego projektu.

  • Najpierw wypisz zainstalowane SDK, aby znaleźć żądaną wersję :
$ 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]
  • Z katalogu rozwiązań :
$ dotnet new globaljson --sdk-version 2.2.110 --force

Teraz dotnetużyje określonej wersji zestawu SDK dla tego rozwiązania.

Nie znalazłem sposobu na zrobienie tego w całym systemie bez zepsucia moich projektów 3.0.

J. Doeseph
źródło
Wydaje się dziwne, że powinno to być konieczne, ale dodanie pliku global.json (dla wersji 2.1.513) rozwiązało również mój problem.
8128
2

Właściwie to wydarzyło się dla mnie odwrotnie niż inne odpowiedzi.

I tak zainstalować najnowszy .NET SDK rdzenia zanim pojawił się problem (3.0.0-preview2 w moim przypadku) nie mając ostatnią wersję Visual Studio (nie jestem pewien, czy to byłoby żadnej różnicy).

Tak więc rozwiązaniem było po prostu odinstalowanie tego najnowszego zestawu .NET Core SDK . (Nie jest to idealne rozwiązanie, jeśli tego potrzebujesz, więc możesz rozważyć uaktualnienie programu Visual Studio do najnowszej wersji, ale przynajmniej to rozwiązało bieżący problem).

Agat
źródło
1

Właśnie przeszedłem przez ten problem. W moim przypadku miałem działający skrypt

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

Dzisiaj zacząłem otrzymywać dokładnie ten błąd. Ale teraz pamiętam, jak zainstalowałem VS2019 dzień wcześniej. Wygląda na to, że zmieniło to coś w VS2017. Poszedłem do aktualizacji VS2017, zainstalowałem najnowszą wersję / aktualizację i naprawiłem to z powrotem.

TS
źródło
0

Miałem ten sam problem i mam najnowszą wersję Microsoft Visual Studio Community 2017 w wersji 15.7.3

Właśnie pobrałem najnowszy SDK 2.1 i nie mam już problemów z kierowaniem. https://www.microsoft.com/net/download/thank-you/dotnet-sdk-2.1.301-windows-x64-installer

Informacje: Microsoft Visual Studio Community 2017, wersja 15.7.3 VisualStudio.15.Release / 15.7.3 + 27703.2026 Microsoft .NET Framework, wersja 4.7.03056

Wersja zainstalowana: Społeczność

Narzędzia języka C # 2.8.3-beta6-62923-07. Commit Hash: 7aafab561e449da50712e16c9e81742b8e7a2969 składniki C # używane w środowisku IDE. W zależności od typu projektu i ustawień można użyć innej wersji kompilatora.

Common Azure Tools 1.10 Udostępnia typowe usługi do użytku przez Azure Mobile Services i Microsoft Azure Tools.

Menedżer pakietów NuGet 4.6.0 Menedżer pakietów NuGet w programie Visual Studio. Aby uzyskać więcej informacji o NuGet, odwiedź http://docs.nuget.org/ .

ProjectServicesPackage Extension 1.0 ProjectServicesPackage Rozszerzenie Visual Studio Szczegółowe informacje

Rozszerzenie ResourcePackage 1.0 Rozszerzenie ResourcePackage Visual Studio Szczegółowe informacje

Visual Basic Tools 2.8.3-beta6-62923-07. Commit Hash: 7aafab561e449da50712e16c9e81742b8e7a2969 Komponenty Visual Basic używane w środowisku IDE. W zależności od typu projektu i ustawień można użyć innej wersji kompilatora.

Visual Studio Code Debug Adapter Host Package 1.0 Interop Layer do hostowania adapterów debugowania Visual Studio Code w programie Visual Studio

Visual Studio Tools for Unity 3.7.0.1 Visual Studio Tools for Unity

islandTraderFX
źródło
0

Upewnij się, że pobierasz pakiet SDK x86 zamiast tylko zestawu SDK x64 dla programu Visual Studio.

juFo
źródło
0

Miałem ten sam problem, co bieżący zestaw .NET SDK nie obsługuje platformy .NET Core 3.1. Docelowy .NET Core 1.1 lub niższy albo użyj wersji zestawu .NET SDK, która obsługuje .NET Core 3.1

1) Upewnij się, że na komputerze jest zainstalowany zestaw .Net core SDK. Pobierz .NET !

2) ustaw zmienne środowiskowe PATH jak poniżej Path

Arjun Dasari
źródło
0

Miałem ten problem podczas próby zbudowania mojego rozwiązania w TFS. Używaliśmy zadania "dot net Publishing". Korzystanie z MSBuild przełamało dla nas lody.

Potatojaisiladki
źródło