Как сказал @imps в комментариях, нет решения для packages.config
проектов в разных решениях. В рамках решения вы можете использовать пользовательский интерфейс NuGet Package Manager «Управление пакетами для решения», а вкладка «Консолидация» позволяет убедиться, что все проекты используют одну и ту же версию, но вам придется повторить это для всех решений.
Если вы мигрируете с packages.config
на PackageReference
, вы можете воспользоваться преимуществами расширяемости MSBuild и либо импортировать обычный файл props
, либо, если используете Visual Studio 2017 или новее, использовать Directory.Build.Props
в верхнем общем родительском каталоге всех проектов.
В вашем файле props вы определяете версии пакетов, которые вам нужны, примерно так:
<Project>
<PropertyGroup>
<NewtonsoftJsonVersion>12.0.1</NewtonsoftJsonVersion>
</PropertyGroup>
</Project>
и затем в ваших csproj
файлах используйте <PackageReference Include="Newtonsoft.Json" Version="$(NewtonsoftJsonVersion)" />
. Проблема заключается в том, что вы больше не можете использовать пользовательский интерфейс диспетчера пакетов или консоль диспетчера пакетов в VS (что ж, вы можете, но он изменит его в csproj
, а не в вашем файле props
), но вы все еще можете использовать пользовательский интерфейс для проверки обновлений. Если вы добавите файл props
в свое решение, то для обновления потребуется всего два щелчка и несколько нажатий на клавиатуре, так что на самом деле это не имеет большого значения.
В вашем примере общим родительским каталогом будет корень TFS, поэтому $/Directory.Build.props
. Проблема заключается в том, что если вы используете CI и у вас есть триггер для запуска сборки решения One на изменениях $/Solution One/*
и запускаете сборку решения два на изменениях $/Solution Two/*
, тогда они оба пропустят изменения на $/Directory.Build.props
. Или, возможно, можно настроить триггеры сборки TFS, чтобы включить его, но я не помню, потому что я не использовал TFVC так долго.
Однако большая проблема в том, что в вашем примере ясно, что вы используете пакет jQuery
. Используется content
, который копирует файлы в ваш проект при установке / обновлении. PackageReference
не работает таким образом (он указан как проблема совместимости пакетов ), поэтому, если вы не хотите использовать другой процесс для обновления jQuery и любых других js / css в своих веб-проектах, вы можете перенести проекты ASP.NET в PackageReference
. Обратите внимание, что проекты ASP.NET Core имеют стиль SDK, который поддерживает только PackageReference
, а не packages.config
, и обычно использует LibMan или npm для получения css и javascript.
Клиенты, которые могут перейти на проекты в стиле SDK, могут даже подумать об использовании этого SDK для централизованного управления пакетами , что поможет вам не случайно оставить номер версии в csproj
.