首页 > 解决方案 > .NET 相当于 Maven Parent Pom / 依赖管理

问题描述

.NET 中是否有与这些 Maven 功能等效的功能?例如,我有这个:

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

我想要一种一致的方式来确保他们对Something. 我已经尝试在 each 中使用Version.props并导入它,但它不像父 pom.xml 中的.csprojMaven BOMs / 部分那样优雅或好。dependencyManagment

有没有更标准的方法呢?

标签: .netmsbuild

解决方案


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


推荐阅读