.net - .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 中的.csproj
Maven BOMs / 部分那样优雅或好。dependencyManagment
有没有更标准的方法呢?
解决方案
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
推荐阅读
- java - 编辑片段的编辑文本时如何通知活动(Android)?
- java - 我想删除数组列表中应该减小数组大小的空元素
- sql - LEAD 差异不返回负值
- python - 在scrapy中运行多个蜘蛛 - 未找到蜘蛛
- php - 我被困了 2 天,这可能是一件显而易见的事情 - PHP + Laravel 图像更新
- mysql - 如何在 SQL 中每周增加一周
- python - 我可以在 manifest.yml 文件中运行多个命令吗?
- amazon-web-services - 尝试从堡垒服务器连接到私有子网中的 EC2 实例
- javascript - Google Apps 脚本 - 合并“on edit”或“on change”触发器的执行
- python - 基于逻辑回归绘制分类区域