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"
    						
    참고: 마지막 줄에 줄 바꿈 및 캐리지 문자가 반환할 추가.

    이제, 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는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com