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

用于在 Visual Studio .NET 中自动递增版本号的插件

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.55/5 (22投票s)

2003年5月14日

3分钟阅读

viewsIcon

133043

downloadIcon

472

终于有了一个用于 VC++.NET 的构建号递增插件!

引言

我发现自动递增 Visual C++ 项目构建号最方便的方法是通过一个插件,该插件在每次成功发布构建时修改构建号。我在 CodeGuru 上找到了一个用于执行此操作的插件,但它仅适用于 Visual Studio 6.0。我花了很多时间寻找一个为 Visual Studio .NET 编写的类似插件,但没有找到。因此,在对 Visual Studio 自动化模型进行几天的研究后,我自己编写了一个。

使用插件而不是使用宏或单独可执行文件的优点

第一个优点是与 Visual Studio .NET 无缝集成,因此无需进行自定义构建步骤、预链接步骤或以其他方式触发构建号递增。 使用插件的主要优点是,它使用 Visual Studio .NET 自动化代码模型来修改文件,因此开发环境“知道”这些更改并比外部解决方案更好地管理它们。

那么,插件是做什么的?

在发布配置上成功构建项目的每个版本时,该插件会搜索项目中包含的名为 version.h 的文件。 然后,它搜索以下一个或所有宏,并以下面描述的方式修改它们的内容。 version.h 中应该存在的宏(至少需要一个)

  • FILE_VERSION
  • PRODUCT_VERSION
  • FILE_VERSION_STR
  • PRODUCT_VERSION_STR

宏可以放置在文件中的任何位置。 该文件除了这些宏之外还可以包含其他内容。 version.h 文件的示例

#define FILE_VERSION         1,0,0,1
#define PRODUCT_VERSION      1,0,0,9
#define FILE_VERSION_STR     "1, 0, 0, 1\n"
#define PRODUCT_VERSION_STR  "1, 0, 0, 9\n"
<!-- end the block of source code -->

在发布配置上成功构建项目后,version.h 将变为

#define FILE_VERSION         1,0,0,2
#define PRODUCT_VERSION      1,0,0,10
#define FILE_VERSION_STR     "1, 0, 0, 2\n"
#define PRODUCT_VERSION_STR  "1, 0, 0, 10\n"
<!-- end the block of source code -->

提示: 所有这些宏都可以包含任何类型的字符串,其中至少包含一个十进制数。 只有该字符串上的最后一个数字会递增。 例如,如果 FILE_VERSION 是 1.2,则构建后,它将变为 1.3。

好的,那么如何使用该插件来增加版本资源中包含的构建号?

在 Microsoft 支持上找到了一篇文章,这里 解释了如何以安全的方式执行此操作。 基本上,您必须从您的 .rc 文件中剪切版本资源,并将其粘贴到您的 .rc2 文件中。 然后将 FILEVERSIONPRODUCTVERSION 语句的替换为 FILE_VERSIONPRODUCT_VERSION。 然后,您必须在版本资源的顶部包含文件 version.h

插件安装

  1. 将文件 autobuildnumber.dll 保存在一个目录中。
  2. 从插件的目录运行命令“regsvr32 autobuildnumber.dll”。
  3. 双击文件 autobuildnumber.reg
  4. 转到 Visual Studio .NET IDE,然后从工具->插件管理器菜单中,选中“AutoBuildNumber”框。 您还可以选中“启动”和“命令行”框。
  5. 在您的项目中包含一个 version.h 文件(包含上述宏)。
  6. 就是这样。

注释

成功递增构建号后,该插件会在构建输出窗口中显示一条输出消息,指示成功。 如果 version.h 文件在源代码控制下并且未检出,则该插件会在构建输出窗口中显示一条描述错误的消息。 在这种情况下,构建号不会递增。

未包含源文件。 该插件是使用 Visual Studio .NET 2003 构建的,并在 Visual Studio .NET 2002 和 2003 上进行了测试。 请给我发送电子邮件以获取支持信息和源文件信息。

© . All rights reserved.