在C#类库项目中实现版本号每次编译时自动增加,可以使用MSBuild的目标或脚本来更新版本号。下面提供一个详细的方法,使用MSBuild脚本在每次编译时更新版本号。
方法:使用MSBuild任务更新版本号
1. 修改项目文件(.csproj)
首先,打开你的C#类库项目文件(.csproj),添加以下内容以使用MSBuild任务在编译前自动更新版本号。
xml
复制代码
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net5.0</TargetFramework> <!-- 默认版本号 --> <Version>1.0.0.0</Version> <FileVersion>1.0.0.0</FileVersion> <AssemblyVersion>1.0.0.0</AssemblyVersion> </PropertyGroup> <ItemGroup> <None Update="Version.txt"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> </ItemGroup> <Target Name="IncrementVersion" BeforeTargets="BeforeBuild"> <Exec Command="powershell -ExecutionPolicy Bypass -File UpdateVersion.ps1" /> </Target> </Project>
2. 创建版本号文件
在项目根目录下创建一个名为Version.txt
的文件,初始内容如下:
1.0.0.0
3. 编写PowerShell脚本
在项目根目录下创建一个名为UpdateVersion.ps1
的PowerShell脚本,用于更新版本号。脚本内容如下:
$versionFilePath = "Version.txt"
读取当前版本号
$currentVersion = Get-Content $versionFilePath
拆分版本号
$versionParts = $currentVersion -split '\.'
major = \[int\]versionParts[0]
minor = \[int\]versionParts[1]
build = \[int\]versionParts[2]
revision = \[int\]versionParts[3]
递增修订号
$revision++
更新版本号
newVersion = "major.minor.build.$revision"
将新版本号写入Version.txt
Set-Content $versionFilePath $newVersion
更新项目文件中的版本号属性
$projectFilePath = "YourProjectName.csproj" # 请将此行替换为你的实际项目文件名
$projectFileContent = Get-Content $projectFilePath
$updatedProjectFileContent = projectFileContent -replace '\
$updatedProjectFileContent = updatedProjectFileContent -replace '\
$updatedProjectFileContent = updatedProjectFileContent -replace '\
Set-Content $projectFilePath $updatedProjectFileContent
请注意,将脚本中的YourProjectName.csproj
替换为实际的项目文件名。
整体流程解释:
-
项目文件(.csproj)修改:
- 配置了版本号属性(
Version
、FileVersion
、AssemblyVersion
)。 - 添加了一个MSBuild目标
IncrementVersion
,在每次编译前运行PowerShell脚本。
- 配置了版本号属性(
-
Version.txt文件:
- 存储当前的版本号。
- 初始内容为
1.0.0.0
。
-
PowerShell脚本(UpdateVersion.ps1):
- 读取并解析当前版本号。
- 递增修订号。
- 更新
Version.txt
文件中的版本号。 - 更新项目文件中的版本号属性。
这种方法通过每次编译前运行一个PowerShell脚本来自动递增版本号,实现了版本号的自动管理。