.NET 等同于 Maven Parent Pom / Dependency Management
.NET equivalent of Maven Parent Pom / Dependency Management
.NET 中是否有与这些 Maven 功能等效的功能?例如,我有这个:
A.sln
Proj1.csproj
<PackageReference="Something" Version="1.2.3"/>
Proj2.csproj
<PackageReference="Something" Version="1.2.3"/>
我想要一种一致的方式来确保他们对 Something
使用 相同的 版本。我试过使用 Version.props
并在每个 .csproj
中导入它,但它不如父 pom 中的 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
。
.NET 中是否有与这些 Maven 功能等效的功能?例如,我有这个:
A.sln
Proj1.csproj
<PackageReference="Something" Version="1.2.3"/>
Proj2.csproj
<PackageReference="Something" Version="1.2.3"/>
我想要一种一致的方式来确保他们对 Something
使用 相同的 版本。我试过使用 Version.props
并在每个 .csproj
中导入它,但它不如父 pom 中的 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
。