Làm th? nào đ? thông tin Phiên b?n tăng sau m?i xây d?ng trong Visual C++

D?ch tiêu đ? D?ch tiêu đ?
ID c?a bài: 237870 - Xem s?n ph?m mà bài này áp d?ng vào.
Bung t?t c? | Thu g?n t?t c?

TÓM T?T

Visual c ++ hi?n không có m?t tính năng đ? t? đ?ng tăng thông tin tài nguyên Phiên b?n c?a d? án c?a b?n sau m?i xây d?ng. Bài vi?t này mô t? m?t trong nh?ng cách đ? cung c?p các tính năng như v?y.

THÔNG TIN THÊM

B?n có th? vi?t m?t chương tr?nh đ? s?a đ?i các t?p tin biên d?ch (.rc) tài nguyên thay v? s? d?ng các bư?c đư?c mô t? ? đây. Tuy nhiên, các t?p tin RC là dư?i s? ki?m soát c?a Visual C++. Visual c ++ s?a đ?i t?p tin RC trong khi ti?t ki?m, và đi?u này có th? ?nh hư?ng đ?n tài nguyên Phiên b?n. Các phương pháp đư?c di?n t? trong ph?n này có th? đư?c áp d?ng cho b?t k? d? án Visual C++. Ví d? này s? d?ng m?t d? án l?p h?c Foundation Microsoft.

T?o m?t d? án m?i b?ng cách s? d?ng MFC (EXE) Appwizard và g?i nó là MyProject. MyProject s? có m?t t?p tin MyProject.rc, bao g?m MyProject.rc2. Các t?p tin .rc2 có ngh?a là cho ngư?i dùng xác đ?nh các ngu?n l?c. Làm theo các bư?c sau đ? tăng thông tin Phiên b?n c?a MyProject sau m?i xây d?ng:
  1. H?y b? ngu?n l?c Phiên b?n t? các t?p tin .rc và đ?t nó trong .rc2 file:

    1. M? MyProject.rc và MyProject.rc2 (t?m th?y trong thư m?c Res), trong m?t tr?nh so?n th?o văn b?n. S? d?ng tr?nh so?n th?o Visual C++, nh?n vào đây M? trên các Tệp Menu và ch?n Văn b?n trong các M? như danh sách cho các t?p tin MyProject.rc.
    2. T?m Phiên b?n báo cáo tài nguyên trong MyProject.rc. Nó s? gi?ng như th?:
      /////////////////////////////////////////////////////////////////////// 
      // 
      // 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. C?t gi?m các ngu?n tài nguyên Phiên b?n t? các t?p tin MyProject.rc và dán nó vào t?p tin MyProject.rc2 bên dư?i nh?ng nh?n xét "Thêm b?ng tay ch?nh s?a tài nguyên ? đây." Thông tin v? nh?ng g? m?i m?t trong các l?nh v?c trong các ngu?n tài nguyên có ngh?a là, xem các báo cáo tài nguyên VERSIONINFO trong tr? giúp.
  2. Thay th? d? li?u FILEVERSION và PRODUCTVERSION v?i macro FILEVER và PRODUCTVER. Tương t?, thay th? các d? li?u chu?i FileVersion và ProductVersion v?i các macro STRFILEVER và STRPRODUCTVER.
  3. Thêm m?t # bao g?m VersionNo.h ngay trư?c khi các báo cáo tài nguyên VS_VERSION_INFO. Bây gi? các ngu?n tài nguyên Phiên b?n s? như:
    /////////////////////////////////////////////////////////////////////// 
    // 
    // 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. T?o m?t t?p tin tiêu đ? đư?c g?i là VersionNo.h trong thư m?c tương t? như d? án c?a b?n. T?p này s? ch?a các câu sau đây, mà là đ?nh ngh?a cho macro đư?c s? d?ng trong bư?c 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"
    						
    Lưu ?: Thêm k? t? linefeed và v?n chuy?n tr? l?i vào d?ng cu?i cùng.

    Bây gi?, t?p tin MyProject.rc bao g?m MyProject.rc2, và MyProject.rc2 t?p tin bao g?m VersionNo.h.
  5. N?i dung t?p VersionNo.h s? đư?c s?a đ?i b?ng cách s? d?ng m?t v? mô Visual Basic Script. V? mô moâ taû döôùi ñaây x? l? s? ki?n Visual C++ BuildFinish, do đó, nó s? không đư?c b?n đi cho đ?n khi hoàn thành m?t xây d?ng. B?t c? khi nào m? VB Script này đư?c g?i là, nó l?n đ?u tiên gia s? các phiên b?n s? bên trong các t?p tin tiêu đ? b?ng m?t s? ti?n c? đ?nh, sau đó nó s? lưu l?i các t?p tin và đóng nó. Trong th?i gian m?t xây d?ng ti?p theo, s? phiên b?n m?i đư?c bao g?m trong t?p tin th?c thi.

    Đ? cài đ?t và s? d?ng m? VB Script, làm như sau:

    1. M? t?p DSM (v? mô) hi?n có ho?c t?o m?t file DSM m?i trong Visual C++. Đ? t?o m?t t?p m?i, b?m M?i trên các Tệp tr?nh đơn, ch?n V? mô File trên các T?p tin tab, cho nó m?t tên và b?m Ok.
    2. Dán m? VB Script sau dư?i đây (m?t file DSM có s?n ph?m nào không th? đư?c cài đ?t trong Visual C++; bư?c ti?p theo gi?i thích cài đ?t):
      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
      								
      CHÚ Ý: M? này là m?t m?u không đư?c h? tr?. B?n có th? s?a đ?i nó cho k?ch b?n xây d?ng c?a b?n.
    3. Cài đ?t file DSM n?u không đư?c cài đ?t đ?. Đ? cài đ?t, b?m Tùy ch?nh trên các Công cụ tr?nh đơn, nh?p vào các Thêm vào và tác ph?m v? mô tab, duy?t đ? ch?n DSM file và b?m Đóng.
  6. Ch?n Xây d?ng MyProject.exe t? các Xây d?ng tr?nh đơn. Sau khi xây d?ng hoàn t?t, m? VersionNo.h file. Nó s? ch?a các câu sau đây:
    #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"
    						
    N?u b?n xây d?ng các m? m?t l?n n?a, thông tin Phiên b?n này bao g?m trong t?p tin th?c thi và thông tin Phiên b?n incremented. B?n có th? gi?i thi?u m?t s? m? trong v? mô mô t? trư?c đó đ? ngăn ch?n incrementing Phiên b?n s? n?u xây d?ng s?n xu?t l?i.

THAM KH?O

Đ? bi?t thêm thông tin v? các mô h?nh đ?i tư?ng Visual C++ xem ch? đ? sau đây trong thư vi?n MSDN:
http://MSDN.Microsoft.com/en-US/Library/aa712880 (VS.71) .aspx

Đ? bi?t thêm chi ti?t v? VB Script macro, xem ch? đ? sau đây trong thư vi?n MSDN:
http://MSDN.Microsoft.com/en-US/Library/aa247202 (VS.60) .aspx

Đ? bi?t thêm chi ti?t v? ngôn ng? VB Script, xem ch? đ? sau đây trong thư vi?n MSDN:
http://MSDN.Microsoft.com/en-US/Library/d1wf56tt (vs.71) .aspx

Đ? bi?t thêm chi ti?t v? các báo cáo tài nguyên Visual C++ VERSIONINFO, xem ch? đ? sau đây trong thư vi?n MSDN:
http://MSDN.Microsoft.com/en-US/Library/aa381043.aspx

Thu?c tính

ID c?a bài: 237870 - L?n xem xét sau cùng: 21 Tháng Tám 2011 - Xem xét l?i: 2.0
Áp d?ng
  • Microsoft Visual C++ 5.0 Enterprise Edition
  • Microsoft Visual C++ 5.0 Professional Edition
T? khóa: 
kbautomation kbdevstudio kbhowto kbide kbscript kbvcobj kbmt KB237870 KbMtvi
Máy d?ch
QUAN TRỌNG: Bài vi?t này đư?c d?ch b?ng ph?n m?m d?ch máy c?a Microsoft ch? không ph?i do con ngư?i d?ch. Microsoft cung c?p các bài vi?t do con ngư?i d?ch và c? các bài vi?t do máy d?ch đ? b?n có th? truy c?p vào t?t c? các bài vi?t trong Cơ s? Ki?n th?c c?a chúng tôi b?ng ngôn ng? c?a b?n. Tuy nhiên, bài vi?t do máy d?ch không ph?i lúc nào c?ng hoàn h?o. Lo?i bài vi?t này có th? ch?a các sai sót v? t? v?ng, cú pháp ho?c ng? pháp, gi?ng như m?t ngư?i nư?c ngoài có th? m?c sai sót khi nói ngôn ng? c?a b?n. Microsoft không ch?u trách nhi?m v? b?t k? s? thi?u chính xác, sai sót ho?c thi?t h?i nào do vi?c d?ch sai n?i dung ho?c do ho?t đ?ng s? d?ng c?a khách hàng gây ra. Microsoft c?ng thư?ng xuyên c?p nh?t ph?n m?m d?ch máy này.
Nh?p chu?t vào đây đ? xem b?n ti?ng Anh c?a bài vi?t này:237870

Cung cấp Phản hồi

 

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