วิธีการเพิ่มข้อมูลรุ่นหลังจากแต่ละโครงสร้างใน c ++ Visual

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 237870 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
ขยายทั้งหมด | ยุบทั้งหมด

สรุป

c ++ภาพไม่มีคุณลักษณะในการเพิ่มทรัพยากรข้อมูลรุ่นของโครงการหลังจากแต่ละโครงสร้างโดยอัตโนมัติ บทความนี้อธิบายวิธีการหนึ่งเพื่อให้คุณลักษณะอย่างหนึ่ง

ข้อมูลเพิ่มเติม

คุณสามารถเขียนโปรแกรมการปรับเปลี่ยนแฟ้มของคอมไพเลอร์ (.rc) ทรัพยากรแทนการใช้ขั้นตอนที่อธิบายไว้ที่นี่ อย่างไรก็ตาม RC แฟ้มอยู่ภายใต้การควบคุมของ c ++แสดงผล c ++ visual ปรับเปลี่ยนแฟ้ม RC ขณะบันทึก และอาจมีผลต่อทรัพยากรรุ่น วิธีการอธิบายไว้ในส่วนนี้สามารถถูกประยุกต์ใช้กับโครงการ c ++ Visual ใด ๆ ตัวอย่างนี้ใช้โครงการ Microsoft มูลฐานคลาส

สร้างโครงการใหม่โดยใช้ Appwizard MFC (EXE) และเรียกใช้ได้MyProject. MyProject จะมีแฟ้มแบบ MyProject.rc ซึ่งรวมถึง MyProject.rc2 แฟ้ม.rc2 คือ meant สำหรับทรัพยากรที่กำหนดโดยผู้ใช้ ทำตามขั้นตอนเหล่านี้เพื่อเพิ่มข้อมูลรุ่นของ MyProject หลังจากแต่ละรุ่นต่อ:
  1. ลบทรัพยากรรุ่นจากแฟ้ม.rc และวางในแฟ้ม.rc2:

    1. เปิด MyProject.rc และ MyProject.rc2 (พบได้ในโฟลเดอร์ Res), ในตัวแก้ไขข้อความ เมื่อต้องใช้ตัวแก้ไข c ++ Visual คลิกOPENในการแฟ้ม:เมนูและเลือกข้อความในการเปิดเป็นรายการแฟ้ม 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.rc รวม MyProject.rc2 และแฟ้ม MyProject.rc2 รวม VersionNo.h
  5. เนื้อหาของแฟ้ม VersionNo.h จะถูกปรับเปลี่ยนโดยใช้แมโคร Visual Basic สคริปต์ แมโครอธิบายใต้จัดการเหตุการณ์ BuildFinish c ++ Visual ดังนั้นจะไม่สามารถ fired จนกว่าการสร้างการเสร็จสมบูรณ์ ทุกครั้งที่เรียกว่ารหัส VB สคริปต์นี้ จะเพิ่มหมายเลขรุ่นภายในส่วนหัวของแฟ้ม ด้วยการยอดเงินคงที่แรก นั้นจะบันทึกแฟ้ม และปิดนั้น ในระหว่างการสร้างที่ตามมา หมายเลขเวอร์ชันใหม่ถูกรวมในการปฏิบัติการ

    เมื่อต้องการติดตั้ง และใช้รหัสของ VB สคริปต์ ดำเนินการต่อไปนี้:

    1. เปิดแฟ้ม DSM (แมโคร) มีอยู่ หรือสร้างแฟ้ม DSM ใหม่ใน c ++ Visual เมื่อต้องสร้างแฟ้มใหม่ คลิกใหม่ในการแฟ้ม:เมนู การเลือกแฟ้มแมโครในการแฟ้มแท็บ ตั้งชื่อ และคลิกตกลง.
    2. วาง VB สคริปต์โค้ดต่อไปนี้ที่ด้านล่าง (ไม่มีการติดตั้งแฟ้ม DSM ว่างเปล่าใน c ++ Visual ขั้นตอนต่อไปนี้อธิบายถึงการติดตั้ง):
      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"
    						
    ถ้าคุณสร้างรหัส อีกครั้ง รายละเอียดเวอร์ชันนี้ในการรวมในการปฏิบัติการ และข้อมูลของรุ่นคือ incremented คุณสามารถทำให้เกิดรหัสบางอย่างในแมโคที่อธิบายไว้ก่อนหน้านี้เพื่อป้องกันไม่ให้หมายเลขเวอร์ชัน incrementing ถ้าข้อผิดพลาดผลิตสร้างขึ้น

ข้อมูลอ้างอิง

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับรูปแบบวัตถุ c ++ Visual ดูหัวข้อต่อไปนี้ในไลบรารีของ MSDN:
.aspx http://msdn.microsoft.com/en-us/library/aa712880 (VS.71)

ดูข้อมูลเพิ่มเติมในแมโครสคริปต์ของ VB หัวข้อต่อไปนี้ในไลบรารีของ MSDN:
.aspx http://msdn.microsoft.com/en-us/library/aa247202 (VS.60)

ดูข้อมูลเพิ่มเติมในภาษาสคริปต์ของ VB หัวข้อต่อไปนี้ในไลบรารีของ MSDN:
.aspx http://msdn.microsoft.com/en-us/library/d1wf56tt (vs.71)

ดูข้อมูลเพิ่มเติมในใบแจ้งยอดทรัพยากร VERSIONINFO c ++ Visual หัวข้อต่อไปนี้ในไลบรารีของ MSDN:
http://msdn.microsoft.com/en-us/library/aa381043.aspx

คุณสมบัติ

หมายเลขบทความ (Article ID): 237870 - รีวิวครั้งสุดท้าย: 16 ตุลาคม 2553 - Revision: 1.0
ใช้กับ
  • Microsoft Visual C++ 5.0 Enterprise Edition
  • Microsoft Visual C++ 5.0 Professional Edition
Keywords: 
kbautomation kbdevstudio kbhowto kbide kbscript kbvcobj kbmt KB237870 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:237870

ให้ข้อเสนอแนะ

 

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