Если у вас уже установлена другая версия пакетов nuget, вы можете использовать Закладка консолидации в диспетчере пакетов для их консолидации.
Это не заставит участников группы использовать консолидированную версию, хотя кто-то все еще может установить другую версию.Если у вас небольшая команда, автоматическое применение может быть излишним, и вы можете применить ту же версию, обучив свою команду и во время проверки кода.Если у вас большой проект и над ним работают несколько команд, я настоятельно рекомендую написать тест или шаг до / после сборки, который отсканирует ваше решение и обеспечит реализацию всех проектов, использующих одну и ту же версию пакетов.
Я не знаю, существует ли какой-либо существующий пакет / инструмент, поэтому, пожалуйста, найдите несколько возможных решений ниже:
Поиск пакетов путем разбора файлов
Просто для поиска PackageReference
элементов в csproj
файлы и синтаксический анализ package.config
, если существует, чтобы найти все ссылочные проекты, а затем убедиться, что нет разных версий.
Это простой вариант, но вы все равно можете получить dll ад из-за переходных зависимостей,Например: вы устанавливаете Newtonsoft.Json 12.0.0
в свое решение, а затем добавляете Hangfire.PostgreSql 1.6.3
в какой-то проект, который транзитивно приносит Newtonsoft.Json 10.0.1
.
отчет о пакете списка точек
Вы можете использовать dotnet list package
длясоздать отчет со всеми установленными пакетами.Если вы используете флаг --include-transitive
, то вы можете определить потенциальные несовместимые версии транзитивных зависимостей.К сожалению, вы ничего не можете сделать в этом случае: либо использовать другую версию корневого пакета, которая использует тот же пакет, который вы используете в своем решении, либо просто расслабиться и полагаться на BindingRedirect
s, которые автоматически генерируются во время установки пакета.