You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Visual Studio C++修改对话框后.rc资源文件被改动问题求助

问题根源

Visual Studio 的可视化资源编辑器在编辑 .rc 文件时,会默认预解析文件内所有可识别的宏,替换为对应字面量后再回写文件,这是编辑器的固有行为,无法直接通过配置关闭。

解决方案

方案1:将版本信息存入独立 .rc2 文件(推荐)

.rc2 是专门设计用于存放用户手动编写、不需要资源编辑器自动修改的资源文件,VS 不会对该类文件做自动改写。
操作步骤:

  • 项目下新建后缀为 .rc2 的文件,例如 version_info.rc2,把你的 VERSIONINFO 完整代码块移入该文件。
  • 用文本编辑器打开项目主 .rc 文件,找到注释标注的「允许用户手动编辑」的区域,添加引用:
#include "version_info.rc2"
  • 删除主 .rc 文件中原有的 VERSIONINFO 代码块即可。后续不管怎么修改对话框资源,都不会触碰 .rc2 里的版本定义。

方案2:用条件编译包裹版本信息

如果不想新增文件,可以用 VS 资源编辑器专属的预定义宏 APSTUDIO_INVOKED 包裹版本信息块,让编辑器自动忽略这部分内容:

#ifndef APSTUDIO_INVOKED
BEGIN
    VALUE "CompanyName", "Big company"
    VALUE "FileDescription", "nice software"
    VALUE "FileVersion", VERSION_NUMBER
    VALUE "InternalName", "some name"
    VALUE "LegalCopyright", "some more strings"
    VALUE "OriginalFilename", "some.exe"
    VALUE "ProductName", "some name"
    VALUE "ProductVersion", VERSION_NUMBER
END
#endif

资源编辑器运行时会默认定义 APSTUDIO_INVOKED 宏,因此这部分代码不会被编辑器读取修改,编译时该宏未定义,代码会正常参与构建。

内容的提问来源于stack exchange,提问作者Andre Schmitz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.20 07:06:05