Не удалось установить пакет "-". Вы пытаетесь установить этот пакет в проект, предназначенный для .NETFramework, Version = v4.5.

Я создал этот пакет, он мне нужен в проекте, но не могу его установить, появляется такая ошибка:

Не удалось установить пакет Mshwf.NiceLinq 1.0.9. Вы пытаетесь установить этот пакет в проект, нацеленный на .NETFramework, Version = v4.5, но пакет не содержит ссылок на сборки или файлов содержимого, совместимых с этой платформой. За дополнительной информацией обращайтесь к автору пакета.

Я не знаю, почему это произошло, в другом проекте (Console) я изменил фреймворк на 4.6 и другие версии, и это не было проблемой, но это происходит только в этом проекте (MVC и веб-API):

это файл NUSPEC:

<?xml version="1.0"?>
<package >
  <metadata>
    <id>Mshwf.NiceLinq</id>
    <version>1.0.9</version>
    <title>Nice LINQ</title>
    <authors>MShawaf</authors>
    <owners>Mshawaf</owners>
    <projectUrl>https://github.com/mshwf/NiceLinq</projectUrl>
    <iconUrl>https://raw.githubusercontent.com/mshwf/NiceLinq/master/logo.png</iconUrl>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>See it as: WHERE ID IN (1, 2, 3, 7, 9, 22, 30, 101)</description>
    <releaseNotes>Minor changes.</releaseNotes>
    <copyright>Copyright 2016</copyright>
    <tags>LINQ IEnumerable Where Contains Search Filter</tags>
  </metadata>
</package>

person mshwf    schedule 04.02.2017    source источник


Ответы (10)


Ваш пакет нацелен на NETFramework, Version = v4.5.2. Это означает, что папка сборки - lib \ net452. Вы пытаетесь установить пакет в проект более высокого уровня (выше 4.5). Создайте проект с помощью framework 4.5.2 или переименуйте папку lib пакета из net452 в версию, на которую вы хотите настроить таргетинг, например net45 или net46.

Вы также можете настроить таргетинг на несколько фреймворков из одного пакета.

Отредактируйте файл csproj следующим образом:

<TargetFrameworks>netstandard2.0;net45</TargetFrameworks>

См. Здесь: https://docs.microsoft.com/en-us/nuget/create-packages/supporting-multiple-target-frameworks

Полный актуальный список имен целевой платформы см. В https://docs.microsoft.com/en-us/nuget/reference/target-frameworks#supported-frameworks

person Mathivanan KP    schedule 04.02.2017
comment
Пакет Mshwf.NiceLinq 1.0.9 нацелен на .NET 4.5.2, поэтому его нельзя установить в проект .NET 4.5. Поэтому им нужно будет создать проект .NET 4.5.2. Однако ваш ответ почти правильный. Я изменил ваш ответ, чтобы он был правильным - надеюсь, вы не против. - person Matt Ward; 04.02.2017

Заходим в папку:

C:\Users\[username]\.nuget\packages\[package name]\1.0.0.4\lib

Переименуйте папку с .net-версией вашего проекта.

Предположим, я использую .net framework 4.6.1, имя моей папки должно быть net461

person Muhammad Aqib    schedule 13.06.2019
comment
это сработало для меня - person the devops guy; 23.12.2020
comment
В чем обратная сторона этого метода? - person Parsa_Gholipour; 30.06.2021

Вы можете установить более раннюю версию, например: Install-Package AutoMapper -Version 7.0.1

person M Fa    schedule 28.04.2019

В моем случае я пытался установить пакет в приложение WPF (.Net Framework), пока мои коллеги готовили пакет для .Net Core Project.

Попробуйте создать проект .Net Core (или тип целевого типа проекта) и установите пакеты таким же образом:

Обозреватель решений> щелкните правой кнопкой мыши, чтобы выбрать решение> Управление пакетами Nuget для решения> Найдите необходимый пакет> Установить

Проверка этого перед другими решениями может сэкономить время.

person Onat Korucu    schedule 06.09.2019

В моем случае я пытался вставить пакет собственного изготовления, который мы поместили в наш собственный канал Nuget, поэтому у меня был доступ к проекту. Это то, что я сделал, чтобы прояснить проблему. В окне решения проекта щелкните файл packages.config. В окне свойств измените действие сборки на «Содержимое». После того, как я снова разместил его в нашей ленте, я смог установить его в основной проект.

person Hoodlum    schedule 10.01.2018

У меня была аналогичная проблема, которую я исправил, удалив файл packages.config (вы можете отредактировать файл, если не хотите удалять), а затем убедился, что оба пакета, которые я использовал, были созданы с использованием той же версии .net, что и Project Я использовал его (для меня пакет был построен с использованием 4.6, в то время как мой консольный проект был нацелен на более раннюю версию .net).

person jahanzeb khan    schedule 26.09.2019

Обновление целевой платформы Application .NET может решить проблему. В моем случае я устанавливаю пакет EmguCv 4.2. Я получаю ту же ошибку при попытке сборки с целевой платформой .NET 4.5.1. После обновления целевой платформы .NET до версии 4.6.2 я могу успешно установить пакет Nuget EmguCv 4.2.

person Weihao Chen    schedule 02.03.2020

Попробуйте установить .net SDK здесь, а затем щелкните правой кнопкой мыши свое решение / проект и восстановите пакеты nuget.

person Samra    schedule 22.07.2020

У меня была эта проблема с пакетом, который я создал и разместил на нашем собственном частном сервере nuget, но даже после того, как я попробовал другие предложения здесь, такие как убедиться, что пакет поддерживает правильную версию .NET Framework, он все равно не сработает.

У меня есть кто-то еще, чтобы попробовать, и им удалось добавить его без проблем. Сегодня, возясь с параметрами VS, я нашел исправление для этого: Параметры - ›Диспетчер пакетов NuGet -› Общие - ›Очистить все кеши NuGet

Как очистить кеш nuget в Visual Studio

Надеюсь, это поможет кому-то, кто был сбит с толку, как и я: D

person SpitFire868    schedule 03.08.2020

Версия .NET Target Framework, скорее всего, слишком старая. У меня VS 2017, и моя целевая платформа по умолчанию для нового проекта .NET Framework была 4.0. Сначала я попытался установить пакет RestSharp, но это не удалось с почти идентичным сообщением, как в этом посте «Не удалось установить пакет ...» Однако, когда я перешел в Project | Недвижимость | и приложение. Я смог изменить Target Framework на .NET Framework 4.6.1, после чего он установился нормально.

person K. Doyle    schedule 14.03.2021