Мой ответ:
НЕТ, мне не нужна вся эта чушь. Вот сценарий RC, который работает для VERSIONINFO.
#define VER_FILEVERSION 1,2,3,4
#define VER_FILEVERSION_STR "1.2.3.4"
#define VER_PRODUCTVERSION 1,2,0,0
#define VER_PRODUCTVERSION_STR "1.2.0.0"
// -------------------------------------------------------
VS_VERSION_INFO VERSIONINFO
FILEVERSION VER_FILEVERSION
PRODUCTVERSION VER_PRODUCTVERSION
FILEFLAGSMASK 0x17L
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x4L
FILETYPE 0x2L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904b0"
BEGIN
VALUE "CompanyName", "Company X"
VALUE "FileDescription", "Description Goes Here"
VALUE "InternalName", "NotSure"
VALUE "LegalCopyright", "Copyright (C) 2009 Your Name Here"
VALUE "OriginalFilename", "DllName.dll"
VALUE "ProductName", "Product Title"
VALUE "FileVersion", VER_FILEVERSION_STR
VALUE "ProductVersion", VER_PRODUCTVERSION_STR
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x409, 1200
END
END
Придумайте:
$(WindowsSDK)\bin\RC.exe /FoProjectName.res ProjectName.rc
У меня была аналогичная проблема при попытке компиляции без MFC. Решение Cheeso мне не подошло.
Все скомпилировано нормально, и я не видел ошибок / предупреждений во время сборки. Значок, который был определен в моем файле ресурсов, правильно отображался в «проводнике Windows». Однако данных о версии не было. (Что можно увидеть, щелкнув правой кнопкой мыши по исполняемому файлу и свойствам выбора. В этом случае вкладки «версия» не было.)
Чтобы заставить его работать, мне пришлось добавить следующий include в верхней части .rc file:
#include <windows.h>
С этим изменением вкладка версии будет отображаться в свойствах исполняемого файла. Кроме того, класс .NET System.Diagnostics.FileVersionInfo теперь может получать информацию о версии, хотя раньше это не работало.
По умолчанию "stdafx.h" будет включать "windows.h". Я не уверен, зачем нужен windows.h, но, похоже, в моем случае это имеет значение.
Edit: Добавлена некоторая более конкретная информация в ответ на Cheeso.