我们已经设置了一个简单的版本系统,我们建立确保内置文件总是表明他们是否是测试版调试或Beta发布版本Visual Studio 2008的预处理器wierdness
我移动的文件版本信息向MYAPP。 RC2和version.h中
// version.h
// _DEBUG is defined by VS
#define _BETA
#ifdef _BETA
#define FILE_DESC1 _T("BETA ")
#else
#define FILE_DESC1 // blank on purpose
#endif
#ifdef _DEBUG
#define FILE_DESC2 _T("Debug Version ")
#else
#define FILE_DESC2 _T("Release Version ") // this is greyed out in the ide when building
#endif
#define FILE_DESC FILE_DESC1 FILE_DESC2
// myapp.rc2
include "version.h"
#ifndef _T
#define _T(x) x
#endif
VS_VERSION_INFO VERSIONINFO
FILEVERSION PROD_VER_MJR,PROD_VER_MIN,PROD_VER_UPD,JOBUILDER_BUILD
PRODUCTVERSION PROD_VER_MJR,PROD_VER_MIN
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x4L
FILETYPE 0x1L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904e4"
BEGIN
VALUE "CompanyName", COMPANY_NAME
VALUE "FileDescription", FILE_DESC
VALUE "FileVersion", JOBBUI_VERSION
VALUE "InternalName", "MyApp.exe"
VALUE "LegalCopyright", COPYRIGHT
VALUE "OriginalFilename", "MyApp.exe"
VALUE "ProductName", PRODUCT_NAME
VALUE "ProductVersion", PRODUCT_VERSION
VALUE "Comments", COMMENTS
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x409, 1252
END
END
然而,当EXE是建在调试输出目录中的文件的描述总是错误地说,而不是“BETA发行版本”,“BETA调试版本”然而,IDE表示“创建的#define FILE_DESC2 _T(“Debug Version”)将被使用。为什么会这样呢?我在另一个项目中使用了这些文件,并且它们正常工作。
谢谢你......
您编辑:是正确的。我按照你的建议添加了#error指令,然后得到这个错误“致命错误RC1116:RC在预处理器错误后终止”看起来资源编译器在#error(可能不知道/支持)和我原来的#defines中有问题。我想知道这个问题吗?山姆代码“似乎”在另一个VS2008项目上工作。 – Canacourse 2009-11-15 20:48:31