65.9K
CodeProject 正在变化。 阅读更多。
Home

用于 Visual Studio .NET 项目的自动生成版本号

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.54/5 (17投票s)

2003 年 9 月 12 日

3分钟阅读

viewsIcon

227531

downloadIcon

1750

一个 Visual Studio .NET 宏,用于自动更新 AssemblyInfo.cs 中写入的版本号。

引言

大家好。这是我第一次写 CodeProject 文章。我感到很荣幸。:) 无论如何,有时我太懒了,每次新版本发布时都要手动更新软件的版本号。我想找到一个类似的工具并对其进行自定义以使其按照我想要的方式工作,这比编写自己的工具更复杂。所以这是一个宏,可以为您自动更新 AssemblyInfo.cs 中的版本号。(对于 VB.NET 项目,这将是 AssemblyInfo.vb)我保持了简单,因此您可以了解思路并自行进行自定义。

它是如何工作的

基本上,该宏一旦触发,就会尝试从您指定的路径打开文件 AssemblyInfo.cs,并使用正则表达式查找版本字符串(在 C# 中类似于这样:[assembly:AssemblyVersion("1.0.0220.1536")])。然后,它会根据某些规则更新旧的版本和内部版本号,并将文件写回。最后,调用一个可选的 Build.BuildSolution 命令。如果您希望每次启动新的构建过程时都更新版本号,请运行此宏,而不是使用正常的“生成”->“生成解决方案”菜单项。

构建号的计算规则非常简单。通常,版本号将如下所示:AA.BB.CCDD.EEFF,其中 AA 是主版本,BB 是次版本。这两个是未触及的:您必须自己设置它们。CCDD.EEFF 部分会自动修改。CC 将用于表示自项目启动以来经过的月份数,DD 表示这些月份之后的几天数。EE 和 FF 将是在该日创建内部版本的时和分。因此,例如,如果项目从 2003 年 1 月 10 日开始,版本为 1.0,并且您在 2003 年 3 月 15 日 14:00 运行此宏,则计算出的内部版本号为:1.0.0205.1400。(我听说这是 Microsoft 对内部版本进行编号的方式。)

如何使其工作

您将必须使用本文中包含的源代码创建一个新宏。我假设您已经知道如何做到这一点。然后,您将必须编辑源代码以使其适合您的项目。以下是您需要更改的内容

  1. 更改变量 theProjectStartingDate。这表示您的项目的开始日期,该计算基于此。
  2. 更改变量 theAssemblyInfoFilePath。该路径相对于项目文件(C# 为 *.csproj)的路径。我将所有源文件放在 Source\ 目录下,因此在示例代码中是 Source\AssemblyInfo.cs。VB.NET 用户必须将文件名更改为 AssemblyInfo.vb,并且还要正确地更改解析 VB 版本字符串的正则表达式。对不起,但我不是 VB 程序员。
  3. 如果您不想在宏完成后进行构建,请将变量 theBuildSolution 更改为 False
  4. 将默认版本字符串从 1.0.* 更改为类似于 1.0.0.0 的字符串,以便宏可以第一次找到它。

如果您在打开 AssemblyInfo.cs 文件的情况下运行此宏,系统会提示您是否重新加载它。但是构建过程不会中断。

结论

就是这样。它没有做太多事情,并且在处理一个解决方案中的多个项目时可能会出现问题。但我认为该代码足够全面,可以供其他人自定义。再次,我不是 VB 程序员,所以如果您发现这篇文章很幼稚,请不要嘲笑。谢谢 :)

历史

  • 2003 年 9 月 13 日 - 初始版本
  • 2003 年 9 月 19 日 - 源代码已更新

 

© . All rights reserved.