C++ 编译后自动设置文件版本

C++ 编译后自动设置文件版本,c++,windows,versioning,C++,Windows,Versioning,是否有任何工具可以将文件版本、产品名称、版权等信息注入.exe或.dll 我确实找到了一个名为的工具,但它只能修改文件本身中已有的资源。我可以使用它,但需要修改一堆VisualStudio项目以包含一些虚拟信息,我当然希望避免这种情况。您正在创建什么类型的exe/dll?对于.NET程序集有一些简单的解决方案,对于非托管程序集有一些困难的解决方案 对于组件: 不完全是在构建之后,但这是我们要做的: 我们从批处理文件中创建C++的包含文件并将其包含在生成过程中。include中包含一个defin

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


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

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

对于组件:

不完全是在构建之后,但这是我们要做的: 我们从批处理文件中创建C++的包含文件并将其包含在生成过程中。include中包含一个define,该define包含在资源文件中


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

您可以创建一个头文件,该头文件将定义一些内容,例如定义主版本2和定义次版本1,以及内部版本号和您需要的任何内容。然后,从.rc文件中包含此头文件

现在,我们来谈谈过程的自动化。构建脚本可以输出此头文件,增加各种值。成功构建后,该文件将提交给VCS,然后可以在下一次迭代中使用。即使使用plain.cmd文件,也可以通过使用环境变量来实现这一点,但是,如果可以的话,可以使用更复杂的东西,如perl/python等来完成这项任务


这对于生成可发布的版本非常有效,如果您需要在开发机器上生成的每个版本上增加版本号,那么这不是最佳解决方案。

您有多少个项目?我计时了,在VisualStudio中需要3秒钟。右键单击project,Add,Resource,select Version,New。

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

我以前使用过StampVer,它工作得很好。您确实需要为资源信息腾出空间,因此根据我的经验,需要按照您的建议进行修改。对于分组工作或在专用构建机器上构建的项目,这不是一个非常实用的解决方案。请将更改的项目签回。