【问题标题】:setting File Version automatically after compile编译后自动设置文件版本
【发布时间】:2010-01-13 19:48:48
【问题描述】:

是否有任何工具可以将文件版本、产品名称、版权等信息注入 .exe 或 .dll 中?

我确实找到了一个名为StampVer 的工具,但它只能修改文件本身中已经存在的资源。我可以使用它,但需要修改一堆 Visual Studio 项目以包含一些虚拟信息,我当然更愿意避免这种情况。

【问题讨论】:

  • 我过去使用过 StampVer,效果很好。您确实需要为资源信息腾出空间,因此根据我的经验,需要按照您的建议进行修改。

标签: c++ windows versioning


【解决方案1】:

你可以制作一个头文件来定义一些东西,例如#define MAJOR_VERSION 2#define MINOR_VERSION 1(与内部版本号以及您需要的任何内容相同)。然后,#include 这个头文件来自你的.rc 文件。

现在,到流程的自动化。您的构建脚本可以输出此头文件,增加各种值。成功构建后,该文件将提交到 VCS,然后可以在下一次迭代中使用。即使使用普通的.cmd 文件,也有一些方法可以使用环境变量来完成此任务,但是,如果可以的话,可以使用更复杂的东西,例如 perl/python 等来完成此任务。

这适用于生成可发布版本,如果您需要在开发机器上创建的每个版本增加一个版本号,这不是最佳解决方案。

【讨论】:

    【解决方案2】:

    我最终添加了一个虚拟资源版本并将使用 StampVer。

    【讨论】:

      【解决方案3】:

      你有多少项目?我计时了,在 Visual Studio 中需要 3 秒。右键项目,添加,资源,选择“版本”,新建。

      【讨论】:

      • 对于以小组形式进行或在专用构建机器上构建的项目来说,这不是一个非常实用的解决方案。
      • 重新检查更改的项目。
      【解决方案4】:

      您正在创建什么样的 exe/dll? .NET 程序集有一些简单的解决方案,而非托管程序集有一些困难的解决方案。

      对于程序集: http://www.codeproject.com/KB/dotnet/ManagingAssemblyVersions.aspx

      不完全是在构建之后,但这就是我们所做的: 我们从批处理文件为 C++ 创建一个包含文件并将其包含在构建过​​程中。 include 中有一个定义,它包含在资源文件中。

      您还可以使用 Visual Studio 修改 PE(未管理的二进制文件)中的资源。您可以手动修改所有版本资源。

      【讨论】:

        猜你喜欢
        • 2018-05-18
        • 2012-06-15
        • 1970-01-01
        • 1970-01-01
        • 2011-10-06
        • 2016-09-27
        • 1970-01-01
        • 2015-07-05
        • 1970-01-01
        相关资源
        最近更新 更多