Поделиться через


NETSDK1045. Текущий пакет SDK для .NET не поддерживает "новую версию" в качестве целевого объекта.

Эта статья относится к: ✔️ пакету SDK для .NET Core 2.1.100 и более поздних версий

Эта ошибка возникает, когда средствам сборки не удается найти пакет SDK для .NET, необходимый для построения проекта. Обычно это происходит из-за проблем с установкой или настройкой пакета SDK для .NET. Полный текст сообщения об ошибке подобен приведенному ниже.

NETSDK1045. Текущий пакет SDK для .NET не поддерживает "новую версию" в качестве целевого объекта. Либо выполните нацеливание на "более старую версию" или более раннюю версию, либо используйте пакет SDK для .NET, поддерживающий "более новую версию".

В следующих разделах описаны некоторые из возможных причин этой ошибки. Проверьте каждую из них и посмотрите, какие из них применимы. Помните, что при внесении изменений в среду или файлы конфигурации может потребоваться перезапустить окна командной строки, перезапустить Visual Studio или перезагрузить компьютер, чтобы изменения вступили в силу.

Версия пакета SDK для .NET

Откройте файл проекта (CSPROJ, VBPROJ или FSPROJ) и проверьте целевую платформу. Это версия платформы, которую приложение пытается использовать.

<TargetFramework>netcoreapp3.0</TargetFramework>

Убедитесь, что на компьютере установлена указанная версия .NET. Список установленных версий можно отобразить с помощью следующей команды (откройте окно командной строки разработчика и выполните следующую команду):

dotnet --list-sdks

Архитектура x86 или x64

Каждая версия пакета SDK для .NET доступна как для архитектуры x86, так и для архитектуры x64. Возможно, проект пытается найти пакет SDK для .NET для неправильной архитектуры, либо пакет SDK для .NET для требуемой архитектуры, возможно, не установлен. Проверьте папки установки требуемой архитектуры. Например, в Windows версия пакета SDK для .NET для архитектуры x86 устанавливается в папку C:\Program Files (x86)\dotnet, а для архитектуры x64 — в папку C:\Program Files\dotnet. Ознакомьтесь с разделом Проверка того, установлена ли платформа .NET и выберите свою операционную систему, чтобы узнать, как определить, какие компоненты установлены на компьютере.

Если нужная версия не установлена, найдите нужный вариант на странице загрузки .NET.

Версия Visual Studio

Возможно, пакет SDK для .NET был установлен с Visual Studio 2022, поэтому обновление до более поздней версии Visual Studio может установить более поздний пакет SDK для .NET и устранить эту ошибку. Дополнительные сведения см. в статье Обновление до последнего выпуска Visual Studio 2017.

Не включена предварительная версия

Если у вас установлена предварительная версия требуемой версии пакета SDK для .NET, необходимо также задать параметр включения предварительных версий в Visual Studio. Выберите Сервис>Параметры>Среда>Функции предварительной версии и убедитесь, что установлен флажок Использовать предварительные версии пакетов SDK для .NET Core.

Версия Visual Studio

Например, для .NET Core 3.0 и более поздних версий требуется Visual Studio 2019. Выполните обновление до Visual Studio 2019 версии 16.3 или более поздней для сборки проекта.

Переменная среды PATH

Средства сборки используют переменную среды PATH для поиска правильной версии средств сборки .NET. Если переменная среды PATH содержит прямые пути к старым средствам сборки, может появиться это сообщение об ошибке. Убедитесь, что единственный путь к средствам .NET в переменной среды PATH относится к папке верхнего уровня dotnet, например C:\Program Files\dotnet. Примером неверной переменной PATH будет нечто вроде C:\Program Files\dotnet\2.1.0\sdks.

Переменная среды MSBuildSDKPath

Проверьте переменную среды MSBuildSDKPath. Эта необязательная переменная среды распознается MSBuild, и если она задана, она переопределяет значение по умолчанию. Может быть задана определенная более ранняя версия пакета SDK для .NET. Если это так, попробуйте удалить ее и перестроить проект.

Файл global.json

Проверьте global.json файл в корневой папке проекта и в решении, а также до цепочки каталогов в корне тома, так как он может находиться в любой точке структуры папок. Если он содержит версию пакета SDK, удалите узел sdk и все его дочерние элементы или обновите его до нужной более новой версии .NET Core.

{
  "sdk": {
    "version": "2.1.0"
  }
}

Файл global.json не требуется, поэтому, если он не содержит ничего, кроме узла sdk, можно удалить весь файл.

Файл Directory.build.props

Файл Directory.build.props является необязательным файлом MSBuild, который может задавать глобальные свойства. Проверьте наличие этих файлов в папке решения и всю цепочку каталогов до корня тома, поскольку они могут находиться в любом месте в структуре папок. Найдите элементы TargetFramework или параметры MSBuildSDKPath, которые могут переопределить нужные параметры.

См. также