1. 从http://www.codeproject.com/Articles/7106/Increase-Build-Numbers-in-Visual-C-NET-using-Macro
下载压缩包IncBuildNrMacro.zip。
2. 解压到目录
C:\Users\HYWIE\Documents\VisualStudio 2008\Projects\VSMacros80\IncBuildNrMacro
共一个文件IncBuildNrMacro.vsmacros。
3. 在工程中加载宏,【工具】->【宏】->【加载宏项目】->选择刚才解压后的IncBuildNrMacro.vsmacros文件。
4. 重新生成工程。发现.rc资源文件中的版本号已经更改(如下图所示)。
5. 在工程中获取版本信息。
#pragma comment(lib, "version.lib")
CString GetCurVersion(HMODULE hModule)
{
DWORD dwHandle = 0;
WORD pArray[4] = {0};
CString strVersionInfo;
VS_FIXEDFILEINFO *pVi = NULL;
TCHAR szFileName[MAX_PATH] = {0};
strVersionInfo.Empty();
if (::GetModuleFileName(hModule, szFileName, MAX_PATH) == 0)
return strVersionInfo;
BYTE *pBuffer = NULL;
int nSize = GetFileVersionInfoSize(szFileName, &dwHandle);
if (nSize == 0)
return strVersionInfo;
else
{
pBuffer = new BYTE[nSize];
ZeroMemory(pBuffer, nSize);
}
if (GetFileVersionInfo(szFileName, dwHandle, nSize, pBuffer) == 0
|| VerQueryValue(pBuffer, _T("\\"), (LPVOID *)&pVi, (PUINT)&nSize) == 0)
{
delete []pBuffer;
return strVersionInfo;
}
pArray[0] = HIWORD(pVi->dwFileVersionMS);
pArray[1] = LOWORD(pVi->dwFileVersionMS);
pArray[2] = HIWORD(pVi->dwFileVersionLS);
pArray[3] = LOWORD(pVi->dwFileVersionLS);
strVersionInfo.Format(_T("%d.%d.%d.%d"), pArray[0], pArray[1], pArray[2], pArray[3]);
delete []pBuffer;
return strVersionInfo;
}