.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/