如何备份每个Visual C ++构建日志?

时间:2014-12-09 18:00:23

标签: visual-c++ visual-studio-2012 logging msbuild backup

Visual Studio 2012允许将MSBuild的输出记录到文件中。但是每次声明新的构建时,这个文件都会被覆盖。

如何自动备份旧的构建日志,即使从那时起触发了新构建,也可以对有问题的构建进行故障排除?

1 个答案:

答案 0 :(得分:2)

创建一个脚本,以使用新的唯一名称复制每个构建日志。例如,使用时间戳:

@Echo off

:: BackupVSLog.bat
:: Locale-independant date adapted from: http://ss64.com/nt/syntax-getdate.html

:: Check if WMIC is available
WMIC.EXE Alias /? >NUL 2>&1 || GOTO s_error_no_wmic

:: Check if a log directory was provided
IF %1=="" GOTO s_error_no_dir
Set directory=%1

:: Check if a project name was provided
IF %2=="" GOTO s_error_no_proj
Set project=%2

:: Use WMIC to retrieve date and time
FOR /F "skip=1 tokens=1-6" %%G IN ('WMIC Path Win32_LocalTime Get Day^,Hour^,Minute^,Month^,Second^,Year /Format:table') DO (
   IF "%%~L"=="" goto s_done
      Set _yyyy=%%L
      Set _mm=00%%J
      Set _dd=00%%G
      Set _hour=00%%H
      SET _minute=00%%I
)
:s_done

:: Pad digits with leading zeros
Set _mm=%_mm:~-2%
Set _dd=%_dd:~-2%
Set _hour=%_hour:~-2%
Set _minute=%_minute:~-2%

:: Format the date
Set formatteddate=%_yyyy%_%_mm%_%_dd%_%_hour%_%_minute%

:: Copy the provided log, take care of whitespaces
Set "dirnoquotes=%directory:"=%"
Set "projnoquotes=%project:"=%"
Echo Copying "%dirnoquotes%%projnoquotes%.log" to "%dirnoquotes%%projnoquotes%_%formatteddate%.log".
Copy "%dirnoquotes%%projnoquotes%.log" "%dirnoquotes%%projnoquotes%_%formatteddate%.log"
GOTO:EOF

:s_error_no_wmic
Echo Error: WMIC no available.
Echo Requires Windows XP Professional, Vista, Windows 7 or Windows 8.
GOTO:EOF

:s_error_no_dir
Echo Error: Log directory not provided.
Echo Usage: BackupVSLog.bat <VSLogDir> <VSProjectName>
GOTO:EOF

:s_error_no_proj
Echo Error: Project name not provided.
Echo Usage: BackupVSLog.bat <VSLogDir> <VSProjectName>
GOTO:EOF

检查是否已启用构建日志记录:

  

工具&gt;选项&gt;项目和解决方案&gt; VC ++项目设置&gt;构建日志记录&gt;的

Screenshot: enabling build logging

选择记录详细程度:

  

工具&gt;选项&gt;项目和解决方案&gt;构建并运行&gt; MSBuild项目构建日志详细程度

Screenshot: setting the log verbosity

将Post-Build事件添加到应保存构建日志的项目属性中:

  

项目属性&gt;配置属性&gt;构建活动&gt;建设后活动   &#34; C:\路径\至\ BackupVSLog.bat&#34; &#34; $(IntermediateOutputPath)&#34; &#34; $(项目名)&#34;

Screenshot: setting up the Post-Build Event