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

如何通过Makefile为Blazor WASM程序集设置自定义格式版本?

解决方案:通过Makefile+dotnet build参数实现自定义版本号

方案1:直接在Makefile中生成版本并传递给dotnet build

这种方式无需修改项目文件,直接通过命令行参数注入版本号,适用于大多数场景。

  1. 在Makefile中编写版本生成逻辑:

    • 用date生成YEAR.MONTH.DAY部分
    • 修订号可以用Git提交次数(如果用Git管理代码),或者自定义递增逻辑
      示例Makefile代码:
    # 生成版本号:YYYY.MM.DD.提交次数
    VERSION := $(shell date +%Y.%m.%d).$(shell git rev-list --count HEAD)
    
    build:
        dotnet build YourSolution.sln /p:Version=$(VERSION) /p:FileVersion=$(VERSION) /p:AssemblyVersion=$(VERSION)
    
    • 如果不用Git,可通过维护一个版本文件来递增修订号:
      # 读取当前修订号,默认0
      REV_FILE := .revision
      REVISION := $(shell cat $(REV_FILE) 2>/dev/null || echo 0)
      VERSION := $(shell date +%Y.%m.%d).$(REVISION)
      
      build:
          dotnet build YourSolution.sln /p:Version=$(VERSION) /p:FileVersion=$(VERSION) /p:AssemblyVersion=$(VERSION)
          # 递增修订号并保存
          $(shell echo $$(($(REVISION)+1)) > $(REV_FILE))
      
  2. 执行构建:
    运行make build即可完成带自定义版本的编译,所有项目的程序集版本、文件版本都会被设置为指定格式。

方案2:修改项目文件统一接收版本参数

如果需要更灵活的版本控制(比如部分项目单独设置版本),可以修改.csproj文件,让它支持从命令行接收自定义版本:

  1. 在所有需要设置版本的项目的.csproj中添加以下配置:

    <PropertyGroup>
        <!-- 当传递CustomVersion参数时,覆盖默认版本 -->
        <Version Condition="'$(CustomVersion)' != ''">$(CustomVersion)</Version>
        <FileVersion Condition="'$(CustomVersion)' != ''">$(CustomVersion)</FileVersion>
        <AssemblyVersion Condition="'$(CustomVersion)' != ''">$(CustomVersion)</AssemblyVersion>
    </PropertyGroup>
    
  2. 在Makefile中生成版本并传递参数:

    VERSION := $(shell date +%Y.%m.%d).$(shell git rev-list --count HEAD)
    
    build:
        dotnet build YourSolution.sln /p:CustomVersion=$(VERSION)
    

注意事项

  • 确保项目文件中没有硬编码的Version、FileVersion或AssemblyVersion,否则命令行参数会被覆盖。
  • Blazor WASM的客户端项目和服务器项目(如果有的话)都会继承这个版本设置,无需单独配置。
  • 若需要区分程序集版本和文件版本(比如程序集版本只保留YYYY.MM.DD,文件版本带修订号),可拆分参数传递:
    VERSION_BASE := $(shell date +%Y.%m.%d)
     REVISION := $(shell git rev-list --count HEAD)
     ASSEMBLY_VERSION := $(VERSION_BASE)
     FILE_VERSION := $(VERSION_BASE).$(REVISION)
    
     build:
         dotnet build YourSolution.sln /p:AssemblyVersion=$(ASSEMBLY_VERSION) /p:FileVersion=$(FILE_VERSION) /p:Version=$(FILE_VERSION)
    

内容的提问来源于stack exchange,提问作者ImZac

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 19:40:26