Maven Parent Pom / 依赖管理的.NET等效工具

3

在.NET中是否有类似于Maven的功能?例如,我有以下内容:

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

我希望有一种一致的方式来确保他们使用相同版本的Something。我尝试过在每个.csproj中使用Version.props并导入它,但它不如Maven BOMs / dependencyManagment部分在父pom中那样优雅或美观。

这方面是否有更标准的方法?

1个回答

3

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

向 Filip W 的博客致敬:使用 MsBuild 15+ 进行解决方案范围的 Nuget 包版本处理 - Nate Barbettini

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接