Текущий .NET SDK не поддерживает таргетинг на .NET Core 2.1. Либо целевой .NET Core 2.0 или ниже, либо используйте .NET SDK, который поддерживает .NET Core 2.1.

81

пробовали перейти на профессиональную версию Visual Studio 2017 v 15.6.0 (предварительная версия 7.0)

и установил aspnetcore-runtime-2.1.0-preview1-final-win-x64 и .net core SDK 2.1.4.

Когда я создал новое веб-приложение, я получаю сообщение об ошибке

«Текущий .NET SDK не поддерживает таргетинг на .NET Core 2.1. Либо используйте .NET Core 2.0 или ниже, либо используйте версию .NET SDK, которая поддерживает .NET Core 2.1».

Когда я пытаюсь создать существующий проект, я получаю сообщение об ошибке

«Текущий .NET SDK не поддерживает таргетинг на .NET Core 2.1. Либо используйте .NET Core 2.0 или ниже, либо используйте версию .NET SDK, которая поддерживает .NET Core 2.1».

Я не вижу ".net core 2.1" в моей целевой платформе

На моем компьютере нет файла global.json

Когда я пробую dotnet --info, я получаю это

c: \ source \ dnacloud \ testapp> dotnet --info Инструменты командной строки .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
источник
1
Это передовой материал, любая версия 15.x.0 VS изначально ломается. Обходной путь не кажется правильным. Очень важно использовать «Справка»> «Отправить отзыв»> «Сообщить о проблеме», иначе проблема не будет исправлена ​​в ближайшее время.
Hans Passant
7
"нарушено дизайном" == плохой дизайн. Я понимаю, что MS хочет быстро развернуть, но ад зависимостей, который они снова
вводят в среду

Ответы:

69

Проблема здесь в том, что Microsoft запутала многих людей тем, как они нумеруют свои пакеты SDK для .NET Core.

В исходном сообщении плаката путь C: \ Program Files \ dotnet \ sdk \ 2.1.100 \ НЕ ЯВЛЯЕТСЯ представляющим среду выполнения .NET Core 2.1 (но можно подумать, что это так).

Я наткнулся на этот пост . Текущий .NET SDK не поддерживает таргетинг на .NET Core 2.1 на сайте developercommunity.visualstudio.com, где сотрудник службы поддержки Microsoft объясняет путаницу:

«Спасибо за ваш отзыв! Мы определили, что эта проблема не является ошибкой. Первый SDK с поддержкой .NET Core 2.1 - это 2.1.300-preview1. Мы знаем, что управление версиями сбивает с толку, поэтому, начиная с версии 2.1.300, версии major.minor SDK теперь также будут согласованы с версиями major.minor среды выполнения ".

Итак ... чтобы получить поддержку .NET Core 2.1 для сборки через SDK, вам необходимо установить SDK как минимум с версией 2.1.300 (поскольку 2.1.2 НЕ является .NET Core 2.1) ... да, сбивает с толку. Спасибо, Microsoft, за потерянное время.

Кристиан Сатник
источник
22
«Мы определили, что эта проблема не является ошибкой». Я бы назвал это ошибкой.
Script Kitty
2
«Мы определили, что это неудобно, поэтому не будем называть это ошибкой».
Крис Б. Беренс,
- плохо выглядит.
Christian
29

Это случилось со мной после установки 2.2.100-preview3-009430 и последующего обновления до Visual Studio 15.9.2.

Я решил, включив параметр «Использовать предварительные версии пакета SDK для .NET Core».

  1. Перейдите в: Инструменты> Параметры> Проекты и решения> .NET Core.

  2. Установите флажок «Использовать предварительные версии пакета SDK для .NET Core».

  3. Перезапустите Visual Studio и перестройте решение.

Параметры предварительного просмотра VS

Дэн Корицински
источник
Что на сервере сборки, на котором установлены только «Инструменты сборки»? Там нет графического интерфейса.
springy76 05
1
Работает для NETSDK1045 Текущий пакет SDK для .NET не поддерживает ориентацию на .NET Core 3.0. при испытании блейзера
J
2
В VS v.16.1 такой опции нет
Евгений Максимов
9
Он был перемещен в Инструменты> Параметры> Среда> Возможности предварительного просмотра
Ludwo
18

Установка .NET Core SDK 2.1.300-preview2помогла мне:

ОБНОВЛЕНИЕ: на всякий случай недавно вышла более новая версия. Вы можете скачать новый .NET Core SDK для 2.2.0-preview1 (который включает ASP.NET 2.2.0-preview1) здесь .

См. Также этот ответ, если вы получаете такую ​​ошибку:

Текущий .NET SDK не поддерживает таргетинг на .NET Core 2.X

Дмитрий Павлов
источник
Мое решение не строится, но теперь IIS Express выдает эту ошибку: «MACHINE / WEBROOT / APPHOST / ORCHARDCORE.CMS.WEB» с физическим корнем «C: \ Projects \ OrchardCore \ src \ OrchardCore.Cms.Web \» не удалось запустить процесс с помощью командной строки '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.
Дэвид Сопко
@DavidSopko, скорее всего, вам нужно позаботиться о переменных окружения LAUNCHER_PATH
Дмитрий Павлов
13

Я решил проблему. причина в том, что я установил

  • aspnetcore-runtime-2.1.0-preview1-final-win-x64 и
  • .net core SDK 2.1.4-x64 версии.
  • При установке файлы sdk были помещены в c:\Program Files\dotnet
  • но VS2017 32bit искал файлы sdk в формате c:\Program Files(x86)\dotnet.

Чтобы решить эту проблему, я

  • установил x86-версию среды выполнения sdk и aspnetcore,

  • установите переменную среды MSBuildSDKsPath так, чтобы она указывала на новый путь установки.

  • удалил все устаревшие SDK из панели управления

Не удалось найти вопрос VS2017 Update 3 «Microsoft.NET.Sdk.Web», который помог решить эту проблему.

user8559109
источник
У меня такая же проблема, и я установил aspnetcore-runtime-2.1.0-preview1-final-win-x64, вероятно, где-то в прошлом месяце. Я не помню, откуда я даже установил, и не смог увидеть ни одной доступной сейчас ссылки для такой загрузки (надеясь, что эта страница могла бы обсуждать эту проблему) Откуда вы установили версию x86? Не могли бы вы добавить больше описания к своему ответу, так как это кажется распространенной проблемой.
rahulaga_dev 03
1
@RahulAgarwal Немного опоздал с игрой, но если вы все еще не нашли нужную страницу загрузки, это: microsoft.com/net/download/windows Щелкните ссылку для загрузки x86 .
Carsten Gehling
12

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

Вы можете скачать SDK с указанного выше сайта

проверьте SDK, который находится на вашем компьютере Путь C: \ Program Files \ dotnet \ sdk

Измените или проверьте целевой фреймворк в Visual Studio,

Щелкните правой кнопкой мыши Startup Application или project => Application => Target Framework.

Вы можете изменить структуру и построить решение и восстановить пакеты слепков.

введите описание изображения здесь

GirishBabuC
источник
Я получил ошибку OP после добавления проекта библиотеки классов (.NET Core). Оказывается, целевая структура не была установлена ​​по умолчанию, поэтому все, что мне нужно было сделать, это выбрать ее из раскрывающегося списка и сохранить, проблема решена.
jhhwilliams
7

То же самое случилось со мной, но тогда для версии 2.2 .NET Core. Я установил последнюю версию .NET Core 2.2 SDK, которая в то время была 2.2.202. Visual studio позволила мне создать новый проект для Core 2.2, но показывала ошибку:

«Текущий .NET SDK не поддерживает таргетинг на .NET Core 2.2. Либо используйте .NET Core 2.1 или ниже, либо используйте версию .NET SDK, которая поддерживает .NET Core 2.2».

Целевая платформа для моего проекта была пуста, а в раскрывающемся списке не отображалось 2.2.

После установки .NET Core SDK 2.2.103 ошибка исчезла, и в раскрывающемся списке действительно отображалось «.NET Core 2.2».

Джейми
источник
2

Остановка IIS для публикации решила проблему. Но сначала мне нужно было установить net core 2.1 SDK и обновить Visual Studio.

Онгун23
источник
2

У меня был установлен .Net Core SDK 2.1.4, и я следил за другими ответами в этом посте, не решив свою проблему. Что в итоге сделало для меня, так это установка .Net Core SDK версии 2.1.301 и удаление всех остальных версий. Похоже, SDK 2.1.4 не может работать с .Net Core 2.1, но SDK 2.1.301 выполняет свою работу.

Sanfalero
источник
Означает ли это, что Visual Studio не использует SDK 2.1.401, даже если он установлен рядом с 2.1.301?
Барт VdA
2

Убедитесь, что global.jsonв корневой папке вашего проекта нет файла, который заставляет ваш проект использовать только .NET SDK 2.1.

Если у вас есть этот файл global.json, удалите его , а затем перезапустите Visual Studio.

Как бы неловко это ни звучало, я потратил почти час на возню и даже загрузил несколько версий SDK, чтобы заставить его использовать 2.2.

Росди Касым
источник
2

Я тоже решил проблему таким образом:

Проверить доступные версии на 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]

Я тестировал свою сборку на всех этих версиях, и она не работает, пока я не удалю все вышеперечисленное в разделе «Программы и компоненты». Затем скачайте из последней версии:

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

Это сработало. Не теряйте время, как будто я только что установил последнюю версию dotnet sdk, и вам хорошо. "

Таванда Зики
источник
1

Я использую Райдер, у меня

Текущий .NET SDK не поддерживает таргетинг на .NET Core 2.2. Либо целевой .NET Core 2.1 или ниже, либо используйте версию .NET SDK, поддерживающую .NET Core 2.2.

Я имел:

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

Я попытался сохранить только последнюю версию sdk и получил:

Ошибка загрузки проекта "WebApplication3": указанный SDK "Microsoft.NET.Sdk.Web" не найден.

Я удалил все и переустановил 2.1.602. Сделал новый проект от Райдера. И это сработало . Не могу сказать, что понял, как решил ...

Проблемы для некоторых людей, похоже, связаны с global.json, см .:
- 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- невозможно найти/

Другие вещи, которые я делал раньше (похоже, это не решило проблему, но могло помочь?):
- Обновление Rider с 2018.3.2 до 2018.3.4 (последнее). - Установка Mono (при просмотре настроек сборки Rider использовалась версия из Unity).
- Безуспешно пытались использовать кастомный MSBuild от Jetbrain (тот, который используется для Linux).
- Установка всего, что связано с .NET Core из установщика VS.
- Последнее обновление сообщества VS. - Перезагружать.

В Rider/Build, Execution, Deployement/Toolset and BuildI теперь есть:
Mono исполняемая: C:\Program Files\Mono\bin\mono.exe
- NET Ядро CLI исполняемая: C:\Program Files\dotnet\dotnet.exe
- Использование MS Строить версии (Auto обнаружено 16,0):C:\Program - Files\dotnet\sdk\2.1.602\MSBuild.dll

Амбруаз Рабье
источник
Я почти уверен, что это связано с последней строкой вашего сообщения: какую версию MSBuild использует Rider? Он должен указывать на тот, который предоставляется последней версией .NET Core SDK, которую вы хотите использовать; в противном случае что-то не так, и вам нужно переустановить SDK ...
rsenna
0

Я начал получать эту ошибку после установки SDK 2.2.300. После прочтения этого сообщения и некоторых других я понизил его до SDK 2.2.1xx, и ошибка исчезла. Примечание. Мне пришлось удалить SDK 2.2.300 и перезапустить после установки SDK 2.2.1xx.

Джонни Чу
источник
0

У меня была эта проблема, и я заново установил VS2017. Это исправило!

Пол Льюаллен
источник
0

Перейти к своему конвейеру. Щелкните Редактировать конвейер. Щелкните раскрывающийся список "Спецификация агента". Измените его на Windows 2019. Нажмите «Сохранить и поставить в очередь».

И вот вы идете. У меня это сработало.

Машал Аман
источник
-1

Похоже, что Microsoft поощряет более совершенную практику кодирования для тех, кто раньше использовал новейшее программное обеспечение для разработки в Net Core 2.1, удаляя возможность использовать более старое программное обеспечение там, где преобладают вредные привычки. Срок службы Net Core 2.0 и более старых версий практически истек, поэтому их не следует использовать. ( https://blogs.msdn.microsoft.com/dotnet/2018/06/20/net-core-2-0-will-reach-end-of-life-on-september-1-2018/ )

1) Microsoft удалила ServiceLocator, поскольку он широко считается анти-шаблоном, приводящим к трудному пониманию кода.

2) Чтобы улучшить приложения MVC, AccountController был удален из Authentication / Authorization, чтобы стимулировать использование страниц Razor, реализующих принцип единой ответственности.

Обход этих изменений с целью увеличения продолжительности использования программного обеспечения, созданного в соответствии с более низкими стандартами разработки программного обеспечения в прошлом, не будет считаться лучшей практикой.

Лэнс Паркингтон
источник