Με τον τρόπο αύξησης των πληροφοριών έκδοσης μετά από κάθε build σε Visual C++

Μεταφράσεις άρθρων Μεταφράσεις άρθρων
Αναγν. άρθρου: 237870 - Δείτε τα προϊόντα στα οποία αναφέρεται το συγκεκριμένο άρθρο.
Ανάπτυξη όλων | Σύμπτυξη όλων

Περίληψη

Το Visual C++ δεν έχει δυνατότητα αυξάνονται αυτόματα τις πληροφορίες πόρων έκδοσης του έργου σας μετά από κάθε έκδοσης. Αυτό το άρθρο περιγράφει έναν τρόπο να παρέχουν μια δυνατότητα.

Περισσότερες πληροφορίες

Μπορείτε να γράψετε ένα πρόγραμμα για να τροποποιήσετε το αρχείο πόρων του μεταγλωττιστή (.rc) αντί να χρησιμοποιήσετε τα βήματα που περιγράφονται εδώ. Ωστόσο, το αρχείο RC είναι υπό τον έλεγχο της Visual C++. Το Visual C++ τροποποιεί το αρχείο RC κατά την αποθήκευση και αυτό μπορεί να επηρεάσει την έκδοση πόρων. Η προσέγγιση που περιγράφεται σε αυτήν την ενότητα μπορούν να εφαρμοστούν σε οποιοδήποτε έργο Visual C++. Το παράδειγμα αυτό χρησιμοποιεί ένα έργο Microsoft Foundation Classes.

Δημιουργία νέου έργου χρησιμοποιώντας το Appwizard MFC (EXE) και καλέστε τηνMyProject. MyProject θα έχετε ένα αρχείο MyProject.rc, η οποία περιλαμβάνει MyProject.rc2. Το αρχείο .rc2 προορίζεται για τους πόρους που ορίζονται από το χρήστη. Ακολουθήστε τα παρακάτω βήματα για να προσαυξήσετε πληροφορίες έκδοσης του MyProject μετά από κάθε build:
  1. Καταργήστε τον πόρο έκδοσης από το αρχείο .rc και να τοποθετήσετε στο αρχείο .rc2:

    1. Ανοίξτε το MyProject.rc και MyProject.rc2 (βρίσκεται στο φάκελο "Πόροι"), σε ένα πρόγραμμα επεξεργασίας κειμένου. Για να χρησιμοποιήσετε το πρόγραμμα επεξεργασίας της Visual C++, κάντε κλικ στο κουμπίOpenΣτο διακομιστήFILEμενού και επιλέξτεTextΣτοΆνοιγμα ωςλίστα για το αρχείο 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. Προσθέστε ένα # includeVersionNo.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 Script. Η μακροεντολή περιγράφεται παρακάτω δείκτες χειρισμού συμβάντος BuildFinish Visual C++, έτσι θα είναι Πυροδοτείται δεν ολοκληρωθεί μια κατασκευή. Κάθε φορά που καλείται αυτός ο κώδικας VB Script, αυξάνει πρώτα τους αριθμούς έκδοσης μέσα στο αρχείο κεφαλίδας από ένα σταθερό ποσό και στη συνέχεια αποθηκεύει το αρχείο και να κλείνει. Κατά τη διάρκεια μιας επόμενο build, ο νέος αριθμός έκδοσης περιλαμβάνεται στο το εκτελέσιμο αρχείο.

    Για να εγκαταστήσετε και να χρησιμοποιήσετε τον κώδικα δέσμης ενεργειών VB, κάντε τα εξής:

    1. Ανοίξτε ένα υπάρχον αρχείο DSM (μακροεντολής) ή να δημιουργήσετε ένα νέο αρχείο DSM σε Visual C++. Για να δημιουργήσετε ένα νέο αρχείο, κάντε κλικ στο κουμπίΝέαΣτο διακομιστήFILEμενού επιλογήςΑρχείο μακροεντολώνΣτο διακομιστήτου Wordtab, give it a name, and clickOk.
    2. Paste the following VB Script code below (an empty DSM file cannot be installed in Visual C++; the next step explains installing):
      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
      								
      ΣΗΜΕΙΩΣΗ:This code is an unsupported sample. You may modify it for your build scenario.
    3. Install the DSM file if it is not already installed. To install, clickΠροσαρμογή (Customize)Στο διακομιστήΕργαλείαμενού, κάντε κλικ στοAdd-in and Macro Filestab, browse to select the DSM file, and clickClose (Κλείσιμο).
  6. ΕπιλογήBuild MyProject.exeαπό τοΔημιουργίαΜενού (Menu). After the build finishes, open the VersionNo.h file. It will contain the following statements:
    #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"
    						
    If you build the code again, this version information in included in the executable, and the version information is incremented. You can introduce some code in the macro described earlier to prevent incrementing version numbers if the build produced errors.

Αναφορές

For more information on the Visual C++ object model see the following topic in the MSDN library:
http://msdn.microsoft.com/en-us/library/aa712880(VS.71).aspx

For more information on VB Script macros, see the following topic in the MSDN library:
http://msdn.microsoft.com/en-us/library/aa247202(VS.60).aspx

For more information on VB Script language, see the following topic in the MSDN library:
http://msdn.microsoft.com/en-us/library/d1wf56tt(vs.71).aspx

For more information on the Visual C++ VERSIONINFO resource statement, see the following topic in the MSDN library:
http://msdn.microsoft.com/en-us/library/aa381043.aspx

Ιδιότητες

Αναγν. άρθρου: 237870 - Τελευταία αναθεώρηση: Κυριακή, 19 Δεκεμβρίου 2010 - Αναθεώρηση: 2.0
Οι πληροφορίες σε αυτό το άρθρο ισχύουν για:
  • Microsoft Visual C++ 5.0 Enterprise Edition
  • Microsoft Visual C++ 5.0 Professional Edition
Λέξεις-κλειδιά: 
kbautomation kbdevstudio kbhowto kbide kbscript kbvcobj kbmt KB237870 KbMtel
Μηχανικά μεταφρασμένο
ΣΗΜΑΝΤΙΚΟ: Αυτό το άρθρο είναι προϊόν λογισμικού μηχανικής μετάφρασης της 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