一、使用MSBuild编译发布

步骤一

在Properties下新增AssemblyVersion.tt文件文件填入以下信息

<#@ template debug="false" hostspecific="false" language="C#" #>
<#@ assembly name="System.Core" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ output extension=".cs" #>

using System.Reflection;

<#
    var date = DateTime.Now;
    int major = 1;
    int minor = date.Year;      // 年份作为次版本号
    int build = int.Parse(date.ToString("MMdd"));  // 月日作为生成号
    int revision = int.Parse(date.ToString("HHmm")); // 时分作为修订号
#>

[assembly: AssemblyVersion("<#= $"{major}.{minor}.{build}.{revision}" #>")]
[assembly: AssemblyFileVersion("<#= $"{major}.{minor}.{build}.{revision}" #>")]

步骤二

修改.csproj文件

ps:Import Project 中的路径非不变,我使用的vs是2026版所以是v18.0,可以到查看版本:帮助==>关于Visual Studio

<GenerateAssemblyVersionAttribute>false</GenerateAssemblyVersionAttribute>
    <GenerateAssemblyFileVersionAttribute>false</GenerateAssemblyFileVersionAttribute>

	<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v18.0\TextTemplating\Microsoft.TextTemplating.targets" Condition="'$(MSBuildRuntimeType)' == 'Full'" />
	<PropertyGroup>
		<TransformOnBuild>true</TransformOnBuild> 
        <!-- 下面两个必须添加要不然生成的时候会报错 -->
		<GenerateAssemblyVersionAttribute>false</GenerateAssemblyVersionAttribute>
		<GenerateAssemblyFileVersionAttribute>false</GenerateAssemblyFileVersionAttribute>
	</PropertyGroup>

二、使用dotnet publish

在项目文件中(.csproj文件)中添加

注意major.minor.build.revision的每个值最大值都是65534,超过最大值就会报错

<Version>65534.65534.65534.65534</Version>

  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
    <Version>1.$([System.DateTime]::Now.ToString('yyyy.MMdd.HHmm'))</Version>
  </PropertyGroup>

更多推荐