我正在使用Visual Studio 2008.是否可以执行解决方案的自动构建,从而可以更改项目的资源文件/其他文件以获取值?
例如,到期日。每次我需要一个新的到期日期,我将不得不打开解决方案,打开相关的源文件,修改到期日,重建。
我想知道是否可以缩短所有这些步骤,基本上只需更改日期和构建而无需打开项目。
谢谢!
答案 0 :(得分:1)
您可以从命令行运行构建,而无需启动Visual Studio 这与构建脚本一起是执行时间/日期构建的常用方法
示例:
devenv /clean release /project ProjectName SolutionName.sln
devenv /build release /project ProjectName SolutionName.sln
对.rc文件的更改并不总是被VS2005 / 8中的/ build选中,因此执行干净构建更安全。
然后我有一个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
最终包含在application.rc
中#include "res\application.rc2" // non-Microsoft Visual C++ edited resources
所有这一切都证明是必要的,因为当在对话框编辑器中打开时,Visual Studio会覆盖对.rc文件的外部更改 - 不知道这是否已在较新版本中修复,并且它对于MFC来说是一个问题。 / p>