.NET 相当于 Maven Parent Pom/依赖管理

标签 .net msbuild

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

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

我想要一种一致的方式来确保他们使用 Something 的版本.我试过使用 Version.props并在每个 .csproj 中导入它,但它不像 Maven BOM 那样优雅或漂亮/dependencyManagment父 pom 中的部分。

有没有更标准的方法呢?

最佳答案

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如果你想在所有项目中标准化它。

关于.NET 相当于 Maven Parent Pom/依赖管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61599202/

相关文章:

.net - 设置ListView ItemTemplate并获取ObservableCollection相关对象

c# - async/await - 我使用了错误的同步上下文吗?

msbuild - 在 "BeforeBuild"目标之前捕获的程序集版本

msbuild - 跳过 MSBuild 目标

c - 程序找不到显式链接的 DLL

c# - TinyMCE 类似于 C# .NET 的富文本编辑器?

c# - Scintilla .NET 编辑器。将光标定位在第一条可见行

visual-studio-2008 - 复制到输出目录复制文件夹结构但只想复制文件

c# - 如何处理我们没有引用的一次性元素?

asp.net - 在 MSBuild 期间运行 powershell 脚本