2010-06-29 56 views
0

我正在使用Visual Studio 2008.是否有可能執行自動構建解決方案,以便您可以更改項目的資源文件/其他文件以將值帶入?使用資源修改自動編譯

例如,到期日。每次我需要新的失效日期時,我都必須打開解決方案,打開相關的源文件,修改失效日期,重建。

我想知道是否有可能縮短所有這些步驟,基本上,只需更改日期並構建而不必打開項目。

謝謝!

回答

1

您可以在不啓動Visual Studio的情況下從命令行運行構建。
這與構建腳本一起/月做一次正常的方式建立

例子:

devenv /clean release /project ProjectName SolutionName.sln  
devenv /build release /project ProjectName SolutionName.sln 

變爲rc文件並不總是被拾起/建立在VS2005/8,所以做一個乾淨的構建更安全。

然後,我有一個Python腳本,更新包含

#define VERSION_MAJOR 1 
#define VERSION_MINOR 12 
#define VERSION_BUILD 368 
#define VERSION_DATE "2010:06:19" 

這則包括在application.rc2文件version.h文件,。抱歉,不記得錯綜複雜的字符串宏步驟的原因。我發現它在幾年前就已經在網絡上出現了,現在可能有更簡單的方法 - 但這已經從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的一個問題。

+0

任何示例?一些鏈接將會很好。 – user303907 2010-06-29 04:59:15