NET эквивалент Maven Parent Pom / Управление зависимостями - PullRequest
1 голос
/ 04 мая 2020

Есть ли эквивалент этих функций Maven в. NET? Например, у меня есть это:

A.sln
    Proj1.csproj
        <PackageReference="Something" Version="1.2.3"/>
    Proj2.csproj
        <PackageReference="Something" Version="1.2.3"/>

Я хочу последовательным образом убедиться, что они используют такую ​​же версию для Something. Я пытался использовать Version.props и импортировать его в каждом .csproj, но это не так элегантно или красиво, как раздел Maven BOMs / dependencyManagment в родительском пом.

Есть ли более стандартный подход для этого?

1 Ответ

1 голос
/ 04 мая 2020

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, если вы хотите стандартизировать его для всех проектов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...