Directory.Build.targets - это то, что вы ищете. Это позволяет вам устанавливать версии пакетов для всего решения (и все остальное) таким образом, чтобы они распространялись на все проекты.
В вашем примере вы получите:
A.sln
Directory.Build.targets
Proj1.csproj
<PackageReference Include="Something" />
Proj2.csproj
<PackageReference Include="Something" />
Где Directory.Build.targets
содержит:
<Project>
<ItemGroup>
<PackageReference Update="Something" Version="1.2.3" />
</ItemGroup>
</Project>
Обратите внимание на использование Update="Something"
(вместо Include
) и не хватает указанной версии в PackageReferences для каждого проекта.
Этот подход очень полезен для установки версий пакетов во многих проектах, но он может сделать больше, чем это , Я также использовал его для включения одних и тех же правил анализа кода в каждый проект и для установки языковой версии C# в одном месте для всех проектов. Все, что содержится в файле .csproj
для каждого проекта, можно переместить в Directory.Build.targets
, если вы хотите стандартизировать его для всех проектов.