Microsoft 生成任务的自动增量






3.08/5 (5投票s)
在 Microsoft 生成任务中自动增量程序集版本。
引言
本文介绍如何将程序集中构建/修订号作为构建任务自动递增。
背景
我最初是从 Dave Gallant 在本网站上发表的一篇文章中获得了源代码。 他在实施有效的解决方案方面做得非常出色。我最初是从这个博客读到的。 Dave 的原始代码按所述工作,但我想要更多。 具体来说,我曾经使用一个名为UpdateVersion
的项目,该项目几年前做过同样的事情,但使用了命令行。 我想将UpdateVersion
中包含的选项的功能组合到 MSBuild 任务中。 结果包含在此处。
概述
AutoIncrement
在其输入中搜索 .NETAssemblyVersion
属性,并使用几种算法之一计算新的版本号。AutoIncrement
使用几种算法之一计算并输出新的版本号。 您可以将其与 Visual Studio .NET 一起使用,以在每次构建时更新您的AssemblyInfo.*文件。AutoIncrement
将仅计算新的修订号,或者可以同时计算新的构建号和新的修订号。AutoIncrement
可以通过递增现有构建号来计算构建号,也可以根据项目开始日期计算构建号。AutoIncrement
可以通过递增现有修订号来计算修订号,也可以根据午夜以来的秒数计算修订号。
Using the Code
-
将AutoIncrementBuildTask.dll安装到 GAC 中。 这样您就不必将其复制到项目文件所在的同一文件夹中。
-
在您的项目文件(vbproj或csproj)中,添加此行...
<UsingTask TaskName="BuildTasks.IncrementBuildNumber" AssemblyName="AutoIncrementBuildTask, Version=1.0.0.0, Culture=neutral, PublicKeyToken=c77dd5dca239f8e6" />
...在
<Project>
标记和第一个<PropertyGroup>
标记之间。 例如,您的项目的前三行应如下所示<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <UsingTask TaskName="BuildTasks.IncrementBuildNumber" AssemblyName="AutoIncrementBuildTask, Version=1.0.0.0, Culture=neutral, PublicKeyToken=c77dd5dca239f8e6" /> <PropertyGroup>
-
现在找到
<Target Name="BeforeBuild"></Target>
标记,并将此添加到它们之间。<IncrementBuildNumber AssemblyFileLocation="$(MSBuildProjectDirectory)\AssemblyInfo.cs" BuildOptions="-s 2006-05-31 -b MonthDay -r Fixed"/>
重要! - 确保您的程序集文件的路径正确!
$(MSBuildProjectDirectory)
表示您的项目文件所在的文件夹,因此它将相对于该文件夹。 在我的例子中,它位于根文件夹中,由于它是一个 C# 应用程序,因此它是AssemblyInfo.cs文件。 -
保存项目并加载它。 主要版本号和次要版本号将保持不变,并且构建版本号和修订版本号将根据上面的选项进行更新。
关注点
我默认修复修订版本 (-r Fixed) 并递增构建版本 (-b Increment)。 在我的项目中,许多程序集相互引用并复制到通用构建文件夹中。
通用构建文件夹与 Visual Studio 配合良好,但您必须像这样将路径添加到注册表
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\AssemblyFolders\LIB_NET1.1]
@="C:\\usr\\Build\\Lib\\NET-1.1"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727\
AssemblyFoldersEx\LIB_NET2.0]
@="C:\\usr\\Build\\Lib\\NET-2.0"
在这里,我的默认构建目录是c:\usr\Build\Lib\Net-2.0或 Net-1.1(取决于情况)。
示例
<IncrementBuildNumber … BuildOptions="-b Increment">
<IncrementBuildNumber … BuildOptions="-b Increment -r Increment">
<IncrementBuildNumber … BuildOptions="-b MonthDay -s 2002-11-23">
<IncrementBuildNumber … BuildOptions="-b MonthDay -s 11/23/2002">
<IncrementBuildNumber … BuildOptions="-p 1.2.3.4">
<IncrementBuildNumber … BuildOptions="-b BuildDay">
<IncrementBuildNumber … BuildOptions="-b Increment -r Fixed">
<IncrementBuildNumber … BuildOptions="-b BuildDay">
历史
- 1.0.0.0 初始版本,包括来自
UpdateVersion
v1.2和 Dave Gallant 原始实现的代码。 向 Dave 和UpdateVersion
的作者致敬。