Текущий пакет SDK для .NET не поддерживает таргетинг на ошибку .NET Standard 2.0 в обновлении 15.3 Visual Studio 2017

119

Я хочу создать проект библиотеки классов с помощью Target Framework .NET Standard 2.0.

Я обновил свою Visual Studio 2017версию до версии, 15.3а также в установщике Visual Studio проверил.NET Framework 4.7 SDK и.NET Framework 4.7 targeting pack вручную и установил их.

В .NET Standard 2.0поле со списком Target Framework в окне Project / Application по- прежнему нет опции. Поэтому я .csprojвручную изменил тег TargetFramework в файле наnetstandard2.0 , но после попытки сборки я получаю эту ошибку:

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

Саар
источник
4
У вас есть global.jsonфайл, прикрепляющий ваш .NET Core SDK к 1.x? Установили ли вы SDK .NET Core 2.0 отдельно? (Я ожидал, что он будет включен в VS, но все равно установить его не помешает.)
Джон Скит
1
@JonSkeet, устанавливающий .NET Core 2.0 SDK отдельно, работал. Будет хорошо, если вы добавите сюда свое предложение в качестве ответа.
Саар

Ответы:

144

Похоже, что установка обновления VS2017 для этой конкретной версии также не установила .NET Core 2.0 SDK. Вы можете скачать это здесь .

Чтобы проверить, какая версия SDK у вас уже установлена, запустите

dotnet --info

из командной строки. Обратите внимание, что если global.jsonв вашем текущем рабочем каталоге или любом родительском каталоге есть файл, это переопределит, какая версия SDK запущена. (Это полезно, например, если вы хотите принудительно применить определенную версию для проекта.)

Судя по комментариям, некоторые версии обновлений VS2017 действительно устанавливают .NET Core SDK. Я подозреваю, что со временем это может немного измениться.

Джон Скит
источник
1
@Marwie: Я подозреваю, что вы нацелены на netstandard2.0. Я не пробовал настроить таргетинг на это с помощью 1.0 SDK, но не удивлюсь, если это не удастся. Конечно, вы все еще можете настроить таргетинг на netstandard1.X с помощью 1.0 SDK.
Джон Скит
6
Хорошо - я новичок в этой теме - я был удивлен тесной взаимосвязью между ядром .net и стандартом .net - разве не было причиной создания стандарта .net, чтобы опустить такие зависимости? Почему бы не отправить его в отдельной упаковке?
Марви
1
@Marwie: Ну, .NET Core SDK отделен от .NET Core Runtime, который отделен от .NET Standard. Но SDK «знает» о наборе целевых фреймворков, и я не удивлен, что он не будет работать с будущими фреймворками . Это все равно что ожидать, что Visual Studio 2013 скомпилирует код C # 7. Хотя это, возможно , будет целесообразным для MS , чтобы спроектировали так , что вы не нуждаетесь в 2.0 SDK .NET ядра к целевой netstandard2.0, было бы странным использовать случай , чтобы хотеть это в любом случае, ИМО.
Джон Скит
3
Я получил сообщение об ошибке после того, как удалил все SDK для .NET Core 1.x. У меня все еще был Microsoft. Установлены .NET core SDK 2.0.2, 2.0.3, 2.1.1 и 2.1.2, а также VS 2017 5.2. Однажды я вручную установил текущую версию Microsoft. .NET core SDK (2.1.3) Я снова могу компилировать свои проекты. Интересно, что при удалении SDK 1.x сломало SDK 2.x.
Разработчик SOHO,
2
@Justin: Хорошо, похоже, что либо SDK 2.1.4 не установлен должным образом, либо у вас есть файл global.json, прикрепляющий его к старой версии.
Джон Скит
20

в то время как приведенные выше ответы не решили мою проблему. Я наконец решил это, специально перейдя по этой ссылке https://www.microsoft.com/net/download/visual-studio-sdks и загрузив необходимый sdk для Visual Studio . Это действительно сбивало с толку, и я не понимаю, почему, но это решило мою проблему.

Джонни Кэмби
источник
Я не могу просто проголосовать за это, это тоже решило мою проблему, но я надеюсь, что кто-то прояснит причину этой работы.
Бейтан Курт
Это решение сработало и для меня. Для меня это был вопрос несовместимости с последней версией SDK. Если вы используете Visual Studio 2017, вы не можете использовать последнюю версию .NET Core SDK.
ноль
11

Для меня решением было изменить версию, global.jsonчтобы она соответствовала установленной.

Как и другие сказали, версию можно найти dotnet --infoв cmd

Это:

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

стала:

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

Вы также можете создать файл global.json, запустив

dotnet new globaljson --sdk-version 2.1.4

в корне проекта

LSP
источник
2
Где бы global.jsonнайти этот файл, если бы он существовал?
Bruno Bieri
Я думаю , мс удален файл, проверьте .sln и .csproj файлы :)
LSP
2
Этот файл global.jsonбудет рядом с файлом решения. Обычно я включаю элемент решения в само решение. В ходе экспериментов я обнаружил, что изменение версии без закрытия и перезагрузки решения global.jsonможет привести к странным ошибкам сборки. Мой комментарий относится к VS2018 версии 15.9.2 с .NET Core SDK 2.2.100.
Манфред
Из документации .NET Core SDK looks for a global.json file in the current working directory ... or one of its parent directories . Так что вроде файла типа наследования.
StuartLC
10

Это иногда случается, когда я пытаюсь открыть свои старые проекты, и мне помогает изменить целевую структуру проектов. Перейдите в Project -> projectname Properties ... и измените Target framework на тот, который вы установили. Свойства проекта

H35am
источник
Выпадающее меню мне ничего не показывает. Любые идеи?
Дэнни
9

Это сработало для меня

Воспользуйтесь установкой Visual Studio

На вкладке «Рабочие нагрузки» отметьте «Кросс-платформенная разработка .Net Core» и нажмите «Изменить».

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

Не забудьте проверить «Инструменты разработки .NET Core 2.0» в левом меню.

Источник

Заметка

Я устанавливал Asp Net Core раньше, но он не появился в моей Visual Studio, сразу после того, как я установил его, для меня появилась установка Visual Studio.

Виктор Чавес
источник
1
Кроме того, вы можете установить то, что вам нужно, отсюда: dotnet.microsoft.com/download/…
user2173353
3

Когда я обновил Visual Studio до версии 15.5.1, .Net Core SDK был обновлен до 2.X, поэтому эта ошибка исчезла. Когда я бегу dotnet --info, то сейчас вижу следующее:

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

Джонни Ошика
источник
3

У меня это было только с 15.8.3 после удаления некоторых предварительных SDK .NET Core 1.x, мое приложение не компилировалось и показывало ошибку.

Это было исправлено путем установки последней версии SDK для x86, хотя я использую Windows 10 x64.

Я предполагаю, что это связано с тем, что VS 2017 по-прежнему является программой x86, и хотя программы работают как x64, компилятор искал подходящий SDK для x86.

Пол Хэтчер
источник
3

У меня были установки как Visual Studio 2019, так и 2017. Я пытался установить .NET Core 2.X SDK для VS2017 отдельно, но безуспешно.

Проблема в том, что у меня установлен пакет SDK .NET Core 3.0 в качестве sdk-версии по умолчанию , которая VS2017 не нравится.

Мое решение заключалось в том, чтобы переключить версию SDK для конкретного проекта.

  • Сначала перечислите установленные SDK, чтобы найти желаемую версию :
$ 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]
  • Из каталога вашего решения :
$ dotnet new globaljson --sdk-version 2.2.110 --force

Теперь dotnetбудет использовать указанную версию SDK для этого решения.

Я не нашел способа сделать это в масштабе всей системы, не испортив мои проекты 3.0.

Дж. Дозеф
источник
Кажется странным, что это необходимо, но создание global.json (для версии 2.1.513) тоже решило мою проблему.
8128,
2

На самом деле, у меня все произошло наоборот.

Я установил последний пакет SDK .NET Core до появления проблемы (3.0.0-preview2 в моем случае), не имея последней версии Visual Studio (не уверен, что это будет иметь значение).

Итак, решение заключалось в том, чтобы просто удалить последний пакет SDK для .NET Core . (Это не идеально, если вам это нужно, поэтому вы можете рассмотреть возможность обновления Visual Studio до последней версии, но, по крайней мере, это решило текущую проблему).

Агат
источник
1

Я только что пережил эту неприятность. В моем случае у меня был рабочий сценарий

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

Сегодня я начал получать именно эту ошибку. Но теперь я помню, как накануне устанавливал VS2019. Похоже, что-то изменилось для VS2017. Я пошел в обновление VS2017, установил последнюю версию / обновление и исправил его.

TS
источник
0

У меня была такая же проблема, и у меня последняя версия Microsoft Visual Studio Community 2017 версии 15.7.3

Я только что загрузил последнюю версию SDK 2.1 и больше никаких проблем с таргетингом. https://www.microsoft.com/net/download/thank-you/dotnet-sdk-2.1.301-windows-x64-installer

Информация: Microsoft Visual Studio Community 2017 версии 15.7.3 VisualStudio.15.Release / 15.7.3 + 27703.2026 Microsoft .NET Framework версии 4.7.03056

Установленная версия: Сообщество

Инструменты C # 2.8.3-beta6-62923-07. Хеш фиксации: 7aafab561e449da50712e16c9e81742b8e7a2969 Компоненты C #, используемые в среде IDE. В зависимости от типа и настроек вашего проекта может использоваться другая версия компилятора.

Общие инструменты Azure 1.10. Предоставляет общие службы для использования мобильными службами Azure и инструментами Microsoft Azure.

Диспетчер пакетов NuGet 4.6.0 Диспетчер пакетов NuGet в Visual Studio. Для получения дополнительной информации о NuGet посетите http://docs.nuget.org/ .

ProjectServicesPackage Extension 1.0 ProjectServicesPackage Расширение Visual Studio Подробная информация

ResourcePackage Extension 1.0 ResourcePackage Visual Studio Extension Подробная информация

Инструменты Visual Basic 2.8.3-beta6-62923-07. Хеш фиксации: 7aafab561e449da50712e16c9e81742b8e7a2969 Компоненты Visual Basic, используемые в среде IDE. В зависимости от типа и настроек вашего проекта может использоваться другая версия компилятора.

Visual Studio Code Debug Adapter Host Package 1.0 Уровень взаимодействия для размещения адаптеров отладки Visual Studio Code в Visual Studio

Инструменты Visual Studio для Unity 3.7.0.1 Инструменты Visual Studio для Unity

islandTraderFX
источник
0

убедитесь, что вы загружаете x86 SDK, а не только x64 SDK для Visual Studio.

ЮФО
источник
0

У меня была та же проблема, что и текущий .NET SDK не поддерживает таргетинг на .NET Core 3.1. Либо целевой .NET Core 1.1 или ниже, либо используйте версию .NET SDK, поддерживающую .NET Core 3.1.

1) Убедитесь, что на вашем компьютере установлен .Net core SDK. Скачайте .NET !

2) установите переменные среды PATH, как показано ниже.

Арджун Дасари
источник
0

У меня возникла эта проблема при попытке создать свое решение в TFS. Мы использовали задачу «публикация в сети». Использование msbuild сломало для нас лед.

Potatojaisiladki
источник