NuGet Package Manager не устанавливает пакет с самой высокой версией зависимости? - PullRequest
0 голосов
/ 23 июня 2019

Это должно быть ошибкой в ​​используемом менеджере пакетов NuGet (версия 4.6.0).Я использовал опцию DependencyVersion highest, но она всегда выбирает самую низкую версию для зависимостей.

Вот так (я пытаюсь установить Serilog.AspNetCore с зависимостями 2.2.0 - последняя версия, но 2.0.0 всегда

install-package Serilog.AspNetCore -DependencyVersion highest

Одна зависимость, которую он выбирает, - Microsoft.AspNetCore.Http.Abstractions 2.0.0, но я ожидал, что она выберет Microsoft.AspNetCore.Http.Abstractions 2.2.0.Это важно, потому что в моем проекте требуется версия 2.2.0, Serilog должен адаптировать это требование, установив с этой верной версией зависимостей.Но здесь я не смог ничего сделать, чтобы помочь ему понять, что я хочу.

Также Параметры установки и обновления не отображаются в пользовательском интерфейсе диспетчера пакетов NuGet (DependencyVersion также можно выбрать при использовании пользовательского интерфейса для установки пакетов).Так что, похоже, это какая-то ошибка, по крайней мере, в конкретной версии диспетчера пакетов Nuget, которую я использую.

Что я могу сделать, чтобы решить эту проблему?Могу ли я попытаться исправить установленный менеджер nuget (в окне «Обновления» обновлений нет).Спасибо!

ОБНОВЛЕНИЕ

Я только что попробовал традиционный проект .NET, он работает.Но проблема возникает, когда мои проекты ориентированы на .NET Core (ASP.NET Core)?Похоже, он не поддерживает эту функцию для проектов .NET Core?

1 Ответ

0 голосов
/ 24 июня 2019

DependencyVersion switch - это то, что используется для управления поведением, когда NuGet ищет версии исправлений. Похоже, что он появился после NuGet 2.8, но нам следует знать, что эта опция поддерживает только packages.config формат .

Существует два формата управления пакетами: Projects.config и PackageReference .

1.Для традиционного проекта .net: он может использовать Packages.config или PackageReference для управления пакетами nuget. Но по умолчанию использует packages.config.

2.Для основных проектов .net (в которых используется новый файл проекта в формате SDK): в качестве формата управления пакетами используется новый формат PackageReference.

Подробнее об этом см .: Тип поддержки проекта

И кто-то опубликовал этот запрос в github, смотрите вопрос здесь . Надеюсь, это поможет.

Обновление:

Я ожидал, что выберу Microsoft.AspNetCore.Http.Abstractions 2.2.0

Попытка сначала удалить папку bin и obj,

Затем перейдите в меню Сервис => Диспетчер пакетов Nuget => Настройки диспетчера пакетов => Очистить все кэши Nuget. (Иногда это удаляет папку packages в C:\Users\lancel\.nuget\packages, нам нужно вручную создать новую папку packages )

Затем установите Microsoft.AspNetCore.Http.Abstractions 2.2.0 package отдельно перед установкой пакета Serilog.AspNetCore. Создает приложение, и вы можете проверить вывод .dll, установив CopyLocalLockFileAssemblies . На моей машине он успешно ссылается на версию Microsoft.AspNetCore.Http.Abstractions.dll версии 2.2.0. Надеюсь, это поможет:)

...