Я создал пакет NuGet с пустым регистратором, и мой пакет зависит от Microsoft.Extensions.Logging.Abstractions .
Моя PackageReference
строка и мояdependency
в файле .nuspec
установлены на 1.0.0 без специального синтаксиса, который, как я понимаю, означает >=
.
Мой пустой регистратор отлично работает с этой версией, и яЯ подумал, что использование самой низкой рабочей версии библиотеки абстракций сделает мой пакет более легким для использования приложениями, которые, вероятно, будут иметь большие версии.
Однако, когда я ссылаюсь на свой пакет из тестового проекта xUnit, у меня естькрасная ошибка компилятора CS1705.
Мой тестовый проект ссылается на два пакета:
Проект, который он тестирует, представляет собой сайт ASP.NET Core Razor Pages, который, в свою очередь, ссылается натот же пакет абстракций журналирования, который включен в Microsoft.AspNetCore.App 2.2.0 metapackage.
Мой пустой пакет регистратора, который, в свою очередь, ссылается наРегистрация абстракций 1.0.0.0, как я уже описал.
Ошибка компилятора из тестового проекта говорит:
Сборка (Razor Pages proj) использует (Абстракции 2.2.0.0) с версией выше, чем указанная сборка (Abstractions) с идентификатором (Abstractions 1.0.0.0).
Мой пакет может использовать более высокую версию, так что мне не хватает?
Редактировать
Вот диаграмма высокой точности;)
- T is«xUnit Proj».
- W - тестируемый «Сайт Proj».
- E - пустой пакет логгера (Evoq.Instrumentation on nuget.org)
- A -метапакет Microsoft.AspNetCore.App 2.2.0
- L - это Microsoft.Extensions.Logging.Abstractions
Существует правило ближайших побед, которое, я думаю, означает, что зависимость от T до Lчерез E победил бы, и версия 2.0.0 использовалась бы, но я ожидал бы, что предупреждение о понижении пакета не серьезная ошибка компилятора.
Ближайшие победы: https://docs.microsoft.com/en-us/nuget/consume-packages/dependency-resolution#nearest-wins
Редактировать 2
Мне только что пришло в голову, что T> W является ссылкой на проект.Так что, возможно, это короткое замыкание резолюции NuGet.Я добавлю ссылку из T в A напрямую и посмотрю, решит ли это это.