Вы можете запустить сборку из командной строки без запуска Visual Studio.
Это вместе со сценарием сборки является обычным способом выполнения временных / устаревших сборок
Примеры:
devenv /clean release /project ProjectName SolutionName.sln
devenv /build release /project ProjectName SolutionName.sln
изменения в файле .rc не всегда воспринимались / build в VS2005 / 8, поэтому безопаснее делать чистую сборку.
Затем у меня есть скрипт на python, который обновляет файл version.h, содержащий
#define VERSION_MAJOR 1
#define VERSION_MINOR 12
#define VERSION_BUILD 368
#define VERSION_DATE "2010:06:19"
Затем он включается в файл application.rc2. Извините, не могу вспомнить причину запутанных шагов макроса строки. Я нашел это где-то в сети несколько лет назад, сейчас могут быть более простые способы - но это работало с VC ++ 6 до VS2010!
#include "version.h"
#define _STR(x) #x
#define STR(x) _STR(x)
#define VERSION_STRING STR(VERSION_MAJOR) "." STR(VERSION_MINOR) ".0." STR(VERSION_BUILD)
VS_VERSION_INFO VERSIONINFO
FILEVERSION VERSION_MAJOR,VERSION_MINOR,0,VERSION_BUILD
PRODUCTVERSION VERSION_MAJOR,VERSION_MINOR,0,VERSION_BUILD
FILEFLAGSMASK 0x17L
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x4L
FILETYPE 0x1L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "080904b0"
BEGIN
VALUE "FileDescription", "XXX Application"
VALUE "FileVersion", VERSION_STRING "\0"
VALUE "InternalName", "XXX"
VALUE "LegalCopyright", "Copyright (C) 2010"
VALUE "LegalTrademarks", "XXX"
VALUE "ProductName", "XXX Application"
VALUE "ProductVersion", VERSION_STRING "\0"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x809, 1200
END
END
Что, наконец, включено в приложение. Rc
#include "res\application.rc2" // non-Microsoft Visual C++ edited resources
Все это оказалось необходимым, поскольку Visual Studio перезаписывал внешние изменения в файле .rc при его открытии в редакторе диалогов - не знаю, было ли это исправлено в более новых версиях, и это только проблема для MFC.