如何可靠地编辑 .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
我想在 运行 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