我們已經設置了一個簡單的版本系統,我們建立確保內置文件總是表明他們是否是測試版調試或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