You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何自动递增本地NuGet(BaGet)包版本号或从ABP程序集读取版本

自动版本号解决方案(适配ABP框架+本地NuGet)

方案1:复用ABP框架版本号 + 自定义修订号

你可以通过MSBuild属性直接引用ABP包的版本,避免手动硬编码框架版本。确保项目已引用ABP核心包(如Volo.Abp.Core),然后修改.csproj的PropertyGroup:

<PropertyGroup>
  <TargetFramework>netstandard2.0</TargetFramework>
  <RootNamespace>Macha.Abp.Common</RootNamespace>
  <GeneratePackageOnBuild>True</GeneratePackageOnBuild>
  <PackageReadmeFile>README.md</PackageReadmeFile>
  <!-- 定义ABP框架版本,只需和ABP包版本保持一致 -->
  <AbpVersion>5.3.3</AbpVersion>
  <!-- 自定义修订号,可手动更新或自动生成 -->
  <Revision>24</Revision>
  <!-- 拼接最终版本号 -->
  <Version>$(AbpVersion).$(Revision)</Version>
</PropertyGroup>

如果想完全自动化修订号,可替换为时间戳或构建服务器环境变量,比如:

<PropertyGroup>
  <!-- 其他属性不变 -->
  <AbpVersion>5.3.3</AbpVersion>
  <!-- 用当前时间戳作为修订号,避免手动修改 -->
  <Revision>$([System.DateTime]::Now.ToString("yyyyMMddHHmm"))</Revision>
  <Version>$(AbpVersion).$(Revision)</Version>
</PropertyGroup>

方案2:从ABP程序集动态读取版本号

若不想硬编码ABP版本,可通过MSBuild任务从已引用的ABP程序集里读取版本。在.csproj中添加自定义构建任务:

<PropertyGroup>
  <TargetFramework>netstandard2.0</TargetFramework>
  <RootNamespace>Macha.Abp.Common</RootNamespace>
  <GeneratePackageOnBuild>True</GeneratePackageOnBuild>
  <PackageReadmeFile>README.md</PackageReadmeFile>
  <Revision>24</Revision>
</PropertyGroup>

<Target Name="GetAbpVersion" BeforeTargets="GenerateNuspec">
  <!-- 读取ABP核心程序集的版本 -->
  <GetAssemblyIdentity AssemblyFiles="$(NuGetPackageRoot)\volo.abp.core\$(AbpVersion)\lib\netstandard2.0\Volo.Abp.Core.dll">
    <Output TaskParameter="Assemblies" ItemName="AbpAssembly" />
  </GetAssemblyIdentity>
  <PropertyGroup>
    <!-- 提取版本号的前三位(如5.3.3) -->
    <AbpFrameworkVersion>$([System.Version]::Parse('%(AbpAssembly.Version)')).ToString(3)</AbpFrameworkVersion>
    <Version>$(AbpFrameworkVersion).$(Revision)</Version>
  </PropertyGroup>
</Target>

注意:需确保$(NuGetPackageRoot)指向你的本地NuGet缓存或BaGet仓库的包目录,也可直接指定ABP程序集的本地路径。

方案3:Git版本化工具(推荐)

如果团队用Git管理代码,可使用GitVersion自动生成版本号,它能根据Git标签、提交记录自动计算版本,还可固定ABP版本前缀。

安装GitVersion后,在项目根目录添加GitVersion.yml配置:

mode: Mainline
major: 5
minor: 3
patch: 3
next-version: 5.3.3

然后在.csproj中集成GitVersion:

<PropertyGroup>
  <!-- 其他属性不变 -->
  <Version>$(GitVersion.MajorMinorPatch).$(GitVersion.BuildNumber)</Version>
</PropertyGroup>

这样每次构建时,GitVersion会自动基于提交次数生成修订号,无需手动修改任何版本信息。


内容的提问来源于stack exchange,提问作者Çağlar Ayhan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 13:58:39