如何可靠地编辑 .Net SDK 样式的 .csproj 文件中的 <Version> 元素?

How can I reliably edit the <Version> element in a .Net SDK style .csproj file?

我想在 运行 MSBuild 之前使用构建脚本编辑 .csproj 文件中的 <Version> 元素。在我第一次天真的尝试中,我使用了正则表达式并将 <Version>.+?</Version> 替换为我想要使用的版本。

其中一个解决方案有一个带有 <PackageReference> 的 .csproj 文件,该文件也有一个嵌套的 <Version> 元素,因此脚本也更新了它,这破坏了构建。

我计划接下来使用 XPath 查询并更新嵌套在 <PropertyGroup> 下方的 <Version> 元素。

这是在构建脚本中设置版本的可靠方法吗?如果不行,什么方法靠谱?

如果您只想为每个构建设置版本 属性,您可以手动编辑 .csproj 以仅将文件中指定的值设置为默认值:

  <PropertyGroup>
    <!-- Any other tags in this PropertyGroup go here... -->
    <Version Condition="'$(Version)' == ''">1.2.3</Version>
  </PropertyGroup>

然后,在调用 MSBuild 时,您可以为 Version 属性 指定不同的值,例如:

msbuild /p:Version=4.5.6 YourProject.csproj