Visual C++¿¡¼­ °¢ ºôµå ÈÄ ÁõºÐ ¹öÀü Á¤º¸ ¹æ¹ý

±â¼ú ÀÚ·á: 237870 - ÀÌ ¹®¼­°¡ Àû¿ëµÇ´Â Á¦Ç° º¸±â.
¸ðµÎ È®´ë | ¸ðµÎ Ãà¼Ò

¿ä¾à

Visual C++ ÇÁ·ÎÁ§Æ®ÀÇ ¹öÀü ¸®¼Ò½º Á¤º¸¸¦ °¢ ºôµå ÈÄ¿¡ ÀÚµ¿À¸·Î Áõ°¡½ÃŰ·Á¸é ±â´ÉÀº ¾ø½À´Ï´Ù. ÀÌ ¹®¼­¿¡¼­´Â ÀÌ·¯ÇÑ ±â´ÉÀ» Á¦°øÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇÕ´Ï´Ù.

Ãß°¡ Á¤º¸

¿©±â¿¡ ¼³¸íµÈ ´Ü°è¸¦ »ç¿ëÇÏ´Â ´ë½Å ¸®¼Ò½º ÄÄÆÄÀÏ·¯ (.rc) ÆÄÀÏ ¼öÁ¤ ÇÁ·Î±×·¥À» ÀÛ¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª, RC ÆÄÀÏÀ» Visual C++ ÄÁÆ®·Ñ ÇÏ¿¡ ÀÖ½À´Ï´Ù. Visual C++ RC ÆÄÀÏÀ» ÀúÀå, µ¿¾È ¼öÁ¤ÇÏ°í ¹öÀü ¸®¼Ò½º¿¡ ¿µÇâÀ» ÁÙ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ¼½¼Ç¿¡¼­ ¼³¸íÇÑ ¹æ¹ýÀº ¸ðµç Visual C++ ÇÁ·ÎÁ§Æ®¿¡ Àû¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ¿¹Á¦¿¡¼­´Â MFC ÇÁ·ÎÁ§Æ®¸¦ »ç¿ëÇÕ´Ï´Ù.

MFC (EXE) Appwizard »ç¿ëÇÏ¿© »õ ÇÁ·ÎÁ§Æ®¸¦ ¸¸µé°í MyProject È£ÃâÇϽʽÿÀ. MyProjectÀº MyProject.rc2 Æ÷ÇÔÇÏ´Â MyProject.rc ÆÄÀÏÀÌ ÀÖ½À´Ï´Ù. µû¶ó¼­ .rc2 ÆÄÀÏÀº »ç¿ëÀÚ Á¤ÀÇ ¸®¼Ò½º´Â º¸¿©ÁÝ´Ï´Ù. °¢ ºôµå ÈÄ¿¡ MyProjectÀÇ ¹öÀü Á¤º¸¸¦ Áõ°¡½ÃŰ·Á¸é ´ÙÀ½°ú °°ÀÌ ÇϽʽÿÀ.
  1. .rc ÆÄÀÏ¿¡¼­ ¹öÀü ¸®¼Ò½º Á¦°ÅÇϰí .rc2 ÆÄÀÏÀ» ¹èÄ¡ÇϽʽÿÀ.

    1. MyProject.rc ¹× MyProject.rc2 ÇØ»óµµ Æú´õ¸¦ ãÀ» ÅØ½ºÆ® ÆíÁý±â¿¡¼­ ¿±´Ï´Ù. Visual C++ ÆíÁý±â¸¦ »ç¿ëÇÏ·Á¸é ÆÄÀÏ ¸Þ´º¿¡¼­ ¿­±â ¸¦ ¹× MyProject.rc ÆÄÀÏ ¿­±â Çü½Ä ¸ñ·Ï¿¡¼­ ÅØ½ºÆ® ¸¦ ¼±ÅÃÇϽʽÿÀ.
    2. ¹öÀü MyProject.rc ÀÖ´Â ¸®¼Ò½º ¹®À» ã½À´Ï´Ù. ´ÙÀ½°ú °°Àº Ç¥½ÃµÇ¾î¾ß ÇÕ´Ï´Ù:
      /////////////////////////////////////////////////////////////////////// 
      // 
      // Version
      // 
      
      VS_VERSION_INFO VERSIONINFO
       FILEVERSION 1,0,0,1
       PRODUCTVERSION 1,0,0,1
       FILEFLAGSMASK 0x3fL
      #ifdef _DEBUG
       FILEFLAGS 0x1L
      #else
       FILEFLAGS 0x0L
      #endif
       FILEOS 0x4L
       FILETYPE 0x1L
       FILESUBTYPE 0x0L
      BEGIN
          BLOCK "StringFileInfo"
          BEGIN
              BLOCK "040904b0"
              BEGIN
                  VALUE "Comments", "Sample Application\0"
                  VALUE "CompanyName", "Microsoft Corp.\0"
                  VALUE "FileDescription", "MyProject MFC Application\0"
                  VALUE "FileVersion", "1, 0, 0, 1\0"
                  VALUE "InternalName", "MyProject\0"
                  VALUE "LegalCopyright", "Copyright (C) 1999\0"
                  VALUE "OriginalFilename", "MyProject.EXE\0"
                  VALUE "ProductName", "MyProject Application\0"
                  VALUE "ProductVersion", "1, 0, 0, 1\0"
              END
          END
          BLOCK "VarFileInfo"
          BEGIN
              VALUE "Translation", 0x409, 1200
          END
      END
      							
    3. ¹öÀü ¸®¼Ò½º MyProject.rc ÆÄÀÏ¿¡¼­ Àß¶ó³»¾î À̸¦ MyProject.rc2 ÆÄÀÏ¿¡ ÁÖ¼® ¾Æ·¡ "Ãß°¡ ¼öµ¿À¸·Î ¸®¼Ò½º¸¦ ¿©±â¿¡ ÆíÁýÇÒ." °¢ ÀÚ¿ø Çʵå Áß Àǹ̿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº µµ¿ò¸»¿¡¼­ VERSIONINFO ¸®¼Ò½º ¹®À» ÂüÁ¶ÇϽʽÿÀ.
  2. FILEVERSION ¹× PRODUCTVERSION µ¥ÀÌÅ͸¦ FILEVER ¹× PRODUCTVER ¸ÅÅ©·Î¸¦ ´ëüÇϽʽÿÀ. ¸¶Âù°¡Áö·Î, FileVersion ¹× ProductVersion ¹®ÀÚ¿­ µ¥ÀÌÅ͸¦ STRFILEVER ¹× STRPRODUCTVER ¸ÅÅ©·Î¸¦ ´ëüÇϽʽÿÀ.
  3. Ãß°¡ # VersionNo.h VS_VERSION_INFO ¸®¼Ò½º ¹® ¹Ù·Î ¾Õ¿¡ Æ÷ÇԵ˴ϴÙ. ¹öÀü ¸®¼Ò½ºÀÇ ¸ð¾çÀ» ÀÌÁ¦ ´ÙÀ½°ú °°ÀÌ:
    /////////////////////////////////////////////////////////////////////// 
    // 
    // Version
    // 
    #include "VersionNo.h"
    VS_VERSION_INFO VERSIONINFO
     FILEVERSION FILEVER
     PRODUCTVERSION PRODUCTVER
     FILEFLAGSMASK 0x3fL
    #ifdef _DEBUG
     FILEFLAGS 0x1L
    #else
     FILEFLAGS 0x0L
    #endif
     FILEOS 0x4L
     FILETYPE 0x1L
     FILESUBTYPE 0x0L
    BEGIN
        BLOCK "StringFileInfo"
        BEGIN
            BLOCK "040904b0"
            BEGIN
                VALUE "Comments", "Sample Application\0"
                VALUE "CompanyName", "Microsoft Corp.\0"
                VALUE "FileDescription", "MyProject MFC Application\0"
                VALUE "FileVersion", STRFILEVER
                VALUE "InternalName", "MyProject\0"
                VALUE "LegalCopyright", "Copyright (C) 1997\0"
                VALUE "OriginalFilename", "MyProject.EXE\0"
                VALUE "ProductName", "MyProject Application\0"
                VALUE "ProductVersion", STRPRODUCTVER
            END
        END
        BLOCK "VarFileInfo"
        BEGIN
            VALUE "Translation", 0x409, 1200
        END
    END
    					
  4. ÇÁ·ÎÁ§Æ®¿¡ °°Àº µð·ºÅ͸®¿¡ VersionNo.h ¶ó´Â Çì´õ ÆÄÀÏÀ» ¸¸µì´Ï´Ù. ÀÌ ÆÄÀÏÀº 2´Ü°è¿¡¼­ »ç¿ëÇÒ ¸ÅÅ©·Î Á¤ÀÇ´Â ´ÙÀ½ ¹®À» Æ÷ÇÔÇÕ´Ï´Ù:
    #define FILEVER        1,0,0,1
    #define PRODUCTVER     1,0,0,1
    #define STRFILEVER     "1, 0, 0, 1\0"
    #define STRPRODUCTVER  "1, 0, 0, 1\0"
    						
    Âü°í: ¸¶Áö¸· ÁÙ¿¡ ÁÙ ¹Ù²Þ ¹× ij¸®Áö ¹®ÀÚ°¡ ¹ÝȯÇÒ Ãß°¡.

    ÀÌÁ¦, MyProject.rc2, MyProject.rc ÆÄÀÏÀ» Æ÷ÇÔÇÏ´Â ¹× VersionNo.h MyProject.rc2 ÆÄÀÏÀÌ Æ÷ÇԵ˴ϴÙ.
  5. ¸ÅÅ©·Î³ª Visual Basic ½ºÅ©¸³Æ®¸¦ »ç¿ëÇÏ¿© VersionNo.h ÆÄÀÏ ³»¿ëÀº ¼öÁ¤µË´Ï´Ù. ¸ÅÅ©·Î ¾Æ·¡¿¡ ÇÚµé Visual C++ BuildFinish À̺¥Æ®°¡ ¼³¸íµÈ ºôµå°¡ ¿Ï·áµÉ ¶§±îÁö ±× ¹ß»ý ¼ö ¾ø½À´Ï´Ù. VB ½ºÅ©¸³Æ® Äڵ带 È£ÃâÇÒ ¶§¸¶´Ù °íÁ¤µÈ ¾ç¸¸Å­ ¸ÕÀú Çì´õ ÆÄÀÏÀÇ ³»ºÎ ¹öÀü ¹øÈ£¸¦ Áõ°¡½ÃŰ´Â ´ÙÀ½ ÆÄÀÏÀ» ÀúÀåÇÏ°í ´Ý½À´Ï´Ù. ÈÄ¼Ó ºôµåÇÏ´Â µ¿¾È ½ÇÇà ÆÄÀÏ¿¡ »õ ¹öÀü ¹øÈ£°¡ Æ÷ÇԵǾî ÀÖ½À´Ï´Ù.

    ¼³Ä¡ ¹× VB ½ºÅ©¸³Æ® Äڵ带 »ç¿ëÇÏ¿© ´ÙÀ½°ú °°ÀÌ ÇϽʽÿÀ.

    1. ±âÁ¸ DSM (¸ÅÅ©·Î) ÆÄÀÏÀ» ¿­°Å³ª Visual C++¿¡¼­ DSM ÆÄÀÏÀ» »õ·Î ¸¸µì´Ï´Ù. »õ ÆÄÀÏÀ» ¸¸µé·Á¸é ÆÄÀÏ ¸Þ´º¿¡¼­ »õ·Î ¸¸µé±â ¸¦, ¸ÅÅ©·Î ÆÄÀÏÆÄÀÏ ÅÇ¿¡¼­ À̸§À» ÁöÁ¤ÇÑ ¼±ÅÃÇϰí È®ÀÎ À» Ŭ¸¯ÇϽʽÿÀ.
    2. ¾Æ·¡ÀÇ ´ÙÀ½ VB ½ºÅ©¸³Æ® Äڵ带 ºÙ¿© ³Ö½À´Ï´Ù (Visual C++¿¡¼­ ºó DSM ÆÄÀÏÀ» ¼³Ä¡ÇÒ ¼ö ¾ø½À´Ï´Ù; ¼³Ä¡ ´ÙÀ½ ´Ü°è´Â ¼³¸íÇÕ´Ï´Ù):
      Function GetProjectDir(FullName)
      
      'VC++ doesn't provide any method for getting the path of the active project
      'See the VB Script reference for more information on the VB Script functions 
      'used in this function
      
      Dim proj_path
      proj_path = Split(StrReverse(FullName),"\",-1,1)
      
      Dim count
      count = UBound(proj_path)
      
      Dim full_path
      full_path = ""
      Dim i
      
      for i = 1 to count 
      	full_path = full_path & "\" & proj_path(i)
      next
      
      GetProjectDir = StrReverse(full_path)
      
      End Function
      
      
      Sub ReplaceText(selection, count, incrementby)
      
      'selection represents the TextSelection object
      'count represents the position of the version number to be incremented
      'incrementby represents a number that will be added to the existing version number
      
      selection.WordRight dsMove, count
      selection.WordRight dsExtend, 1
      Dim str
      str = selection.Text
      str = str + incrementby
      
      selection.Text = str
      
      End Sub
      
      
      Sub Application_BuildFinish(numError, numWarning)
      
      'This event will be triggered after every build of a project
      'You can check numError and/or numWarning to determine if you want to continue
      'If numError <> 0 Then
          'exit sub
      'Obtain the full path of the active project
      Dim full_path
      full_path = GetProjectDir(ActiveProject.FullName)
      
      full_path = full_path & "versionno.h"
      
      'Open the VersionNo.h file
      Documents.Open full_path
      
      'Obtain the TextSelection object
      Dim selection
      set selection = ActiveDocument.Selection
      selection.StartOfDocument 
      
      'Increment the version information
      ReplaceText selection, 9, 1
      selection.LineDown
      selection.StartOfLine
      ReplaceText selection, 9, 1
      selection.LineDown
      selection.StartOfLine
      ReplaceText selection, 10, 1
      selection.LineDown
      selection.StartOfLine
      ReplaceText selection, 10, 1
      
      ActiveDocument.Save
      ActiveDocument.Close
       
      End Sub
      								
      Âü°í: ÀÌ ÄÚµå´Â Áö¿øµÇÁö ¾Ê´Â »ùÇÃÀÔ´Ï´Ù. ºôµå ½Ã³ª¸®¿À¿¡ ´ëÇØ ¼öÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.
    3. ÀÌ¹Ì ¼³Ä¡µÇ¾î ÀÖÁö ¾ÊÀ¸¸é DSM ÆÄÀÏÀ» ¼³Ä¡ÇϽʽÿÀ. ¼³Ä¡ÇÏ·Á¸é [µµ±¸] ¸Þ´º¿¡¼­ [»ç¿ëÀÚ ÁöÁ¤ À» Ŭ¸¯ÇÏ¿© Ãß°¡ ¹× ¸ÅÅ©·Î ÆÄÀÏ ÅÇÀ» Ŭ¸¯ÇÕ´Ï´Ù DSM ÆÄÀÏÀ» ¼±ÅÃÇÏ·Á¸é ã¾Æº¸±â ¹× ´Ý±â ¸¦ Ŭ¸¯ÇϽʽÿÀ.
  6. ºôµå ¸Þ´º¿¡¼­ ºôµå MyProject.exe ¼±ÅÃÇϽʽÿÀ. ºôµå ¿Ï·á ÈÄ¿¡ VersionNo.h ÆÄÀÏÀ» ¿±´Ï´Ù. ´ÙÀ½ ¹®ÀÌ Æ÷Ç﵃ ¼ö ÀÖ½À´Ï´Ù:
    #define FILEVER        1,0,0,2
    #define PRODUCTVER     1,0,0,2
    #define STRFILEVER     "1, 0, 0, 2\0"
    #define STRPRODUCTVER  "1, 0, 0, 2\0"
    						
    ½ÇÇà ÆÄÀÏ¿¡ Æ÷ÇÔµÈ ´Ù½Ã Äڵ带 ÀÌ ¹öÀü Á¤º¸´Â ºôµå ¹× ¹öÀü Á¤º¸¸¦ Áõ°¡ÇÕ´Ï´Ù. ÀϺΠÄڵ忡¼­ ºôµå ¿À·ù°¡ »ý¼ºµÇ´Â °æ¿ì ÁõºÐ ¹öÀü ¹øÈ£¸¦ ¾Êµµ·Ï ¾Õ¿¡¼­ ¼³¸íÇÑ ¸ÅÅ©·Î µµÀÔÇÒ ¼ö ÀÖ½À´Ï´Ù.

ÂüÁ¶

Visual C++ °³Ã¼ ¸ðµ¨¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº MSDN ¶óÀ̺귯¸®¿¡¼­ ´ÙÀ½ Ç׸ñÀ» ÂüÁ¶ÇϽʽÿÀ.
http://msdn.microsoft.com/en-us/library/aa712880(VS.71).aspx

VB ½ºÅ©¸³Æ® ¸ÅÅ©·Î¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº MSDN ¶óÀ̺귯¸®¿¡¼­ ´ÙÀ½ Ç׸ñÀ» ÂüÁ¶ÇϽʽÿÀ.
http://msdn.microsoft.com/en-us/library/aa247202(VS.60).aspx

VB ½ºÅ©¸³Æ® ¾ð¾î¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº MSDN ¶óÀ̺귯¸®¿¡¼­ ´ÙÀ½ Ç׸ñÀ» ÂüÁ¶ÇϽʽÿÀ.
http://msdn.microsoft.com/en-us/library/d1wf56tt(vs.71).aspx

Visual C++ VERSIONINFO ¸®¼Ò½º ¹®¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº MSDN ¶óÀ̺귯¸®¿¡¼­ ´ÙÀ½ Ç׸ñÀ» ÂüÁ¶ÇϽʽÿÀ.
http://msdn.microsoft.com/en-us/library/aa381043.aspx

¼Ó¼º

±â¼ú ÀÚ·á: 237870 - ¸¶Áö¸· °ËÅä: 2005³â 9¿ù 2ÀÏ ±Ý¿äÀÏ - ¼öÁ¤: 3.2
º» ¹®¼­ÀÇ Á¤º¸´Â ´ÙÀ½ÀÇ Á¦Ç°¿¡ Àû¿ëµË´Ï´Ù.
  • Microsoft Visual C++ 5.0 Enterprise Edition
  • Microsoft Visual C++ 6.0 Enterprise Edition
  • Microsoft Visual C++ 5.0 Professional Edition
  • Microsoft Visual C++ 6.0 Professional Edition
  • Microsoft Visual C++, 32-bit Learning Edition 6.0
Ű¿öµå:?
kbmt kbautomation kbdevstudio kbhowto kbide kbscript kbvcobj KB237870 KbMtko
±â°è ¹ø¿ªµÈ ¹®¼­
Áß¿ä: º» ¹®¼­´Â Àü¹® ¹ø¿ª°¡°¡ ¹ø¿ªÇÑ °ÍÀÌ ¾Æ´Ï¶ó Microsoft ±â°è ¹ø¿ª ¼ÒÇÁÆ®¿þ¾î·Î ¹ø¿ªÇÑ °ÍÀÔ´Ï´Ù. Microsoft´Â ¹ø¿ª°¡°¡ ¹ø¿ªÇÑ ¹®¼­ ¹× ±â°è ¹ø¿ªµÈ ¹®¼­¸¦ ¸ðµÎ Á¦°øÇϹǷΠMicrosoft ±â¼ú ÀÚ·á¿¡ ÀÖ´Â ¸ðµç ¹®¼­¸¦ Çѱ۷ΠÁ¢ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª ±â°è ¹ø¿ª ¹®¼­°¡ Ç×»ó ¿Ïº®ÇÑ °ÍÀº ¾Æ´Õ´Ï´Ù. µû¶ó¼­ ±â°è ¹ø¿ª ¹®¼­¿¡´Â ¸¶Ä¡ ¿Ü±¹ÀÎÀÌ Çѱ¹¾î·Î ¸»ÇÒ ¶§ ½Ç¼ö¸¦ ÇÏ´Â °Íó·³ ¾îÈÖ, ±¸¹® ¶Ç´Â ¹®¹ý¿¡ ¿À·ù°¡ ÀÖÀ» ¼ö ÀÖ½À´Ï´Ù. Microsoft´Â ³»¿ë»óÀÇ ¿À¿ª ¶Ç´Â Microsoft °í°´ÀÌ ÀÌ·¯ÇÑ ¿À¿ªÀ» »ç¿ëÇÔÀ¸·Î½á ¹ß»ýÇÏ´Â ºÎ Á¤È®¼º, ¿À·ù ¶Ç´Â ¼ÕÇØ¿¡ ´ëÇØ Ã¥ÀÓÀ» ÁöÁö ¾Ê½À´Ï´Ù. Microsoft´Â ÀÌ·¯ÇÑ ¹®Á¦¸¦ ÇØ°áÇϱâ À§ÇØ ±â°è ¹ø¿ª ¼ÒÇÁÆ®¿þ¾î¸¦ ÀÚÁÖ ¾÷µ¥ÀÌÆ®Çϰí ÀÖ½À´Ï´Ù.

Çǵå¹é º¸³»±â