Возьмите пакет вроде Microsoft.AspNetCore.Http.Abstractions
, это зависит от Microsoft.AspNetCore.Http.Features
по этой строке в nuspec
:
<dependency id="Microsoft.AspNetCore.Http.Features" version="2.1.1" exclude="Build,Analyzers" />
со значением 2.1.1
>= 2.1.1
на языке nuget.
Поэтому я использую зависимость Microsoft.AspNetCore.Http.Abstractions
, версии 2.1.1
именно в моем проекте.
В настоящее время существует версия 2.1.1
и 2.2
.Microsoft.AspNetCore.Http.Features
в nuget, так что мой проект заканчивается на Microsoft.AspNetCore.Http 2.1.1
и Microsoft.AspNetCore.Http.Features 2.2
.
Но затем я запускаю свой проект и получаю ошибки привязки сборки, потому что фактическая Microsoft.AspNetCore.Http.Abstractions 2.1.1
dll зависит отMicrosoft.AspNetCore.Http.Features 2.1.1
.
TLDR Nuspec говорит >= 2.1.1
, dll связан с == 2.1.1
Это, похоже, верно для почти всех пакетов MS.
Это монументальный тупик или я что-то не так делаю?Мне приходится самостоятельно пересматривать графы зависимостей и привязываться к каждой конкретной версии, которая нужна каждому dll, потому что nuspecs не выглядят правильно настроенными.
Что происходит?
Пример привязкиошибка:
Невозможно загрузить один или несколько типов: не удалось загрузить файл или сборку 'Microsoft.AspNetCore.Http.Features, версия = 2.1.1.0, культура = нейтральная, PublicKeyToken = adb9793829ddae60' или однаего зависимостей.Определение манифеста обнаруженной сборки не соответствует ссылке на сборку.(Исключение из HRESULT: 0x80131040)
(потому что я получил 2.2
от nuget)