Gewusst wie: Inkrementieren Versionsinformationen nach jedem Build in Visual C++

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 237870 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Alles erweitern | Alles schließen

Zusammenfassung

Visual C++ verfügt nicht über ein Feature Ressourceninformationen Version des Projekts nach jedem Build automatisch erhöht. Dieser Artikel beschreibt eine Möglichkeit, diese Funktion bereitstellen.

Weitere Informationen

Sie können ein Programm zum Ändern der Ressourcencompiler (RC) Ressourcendatei anstelle der beschriebenen Schritte hier schreiben. Allerdings ist die RC-Datei unter der Kontrolle der Visual C++. Visual C++ bearbeitet die RC-Datei beim Speichern, und dies kann die Ressource auswirken. Die in diesem Abschnitt beschriebene Methode, kann auf alle Visual C++-Projekt angewendet werden. In diesem Beispiel wird ein Microsoft Foundation Classes-Projekt verwendet.

Mit der MFC (EXE) vom Anwendungs-Assistenten ein neues Projekt erstellen und diese aufrufen MyProject. MyProject haben eine MyProject.rc-Datei MyProject.rc2 enthält. Die RC2-Datei ist für benutzerdefinierte Ressourcen vorgesehen. Gehen folgendermaßen Sie vor, um MyProjects Versionsinformationen nach jedem Build erhöht:
  1. Entfernen Sie die Ressource aus der RC-Datei, und platzieren Sie es in der RC2-Datei:

    1. MyProject.rc und MyProject.rc2 (im Ordner "Res" gefunden), in einem Text-Editor zu öffnen. Um Visual C++-Editor verwenden, klicken Sie auf Öffnen auf der Datei Menü, und wählen Sie Text Klicken Sie im Dialogfeld Als öffnen Liste der MyProject.rc-Datei.
    2. Suchen Sie die Version Ressource Anweisungen in MyProject.rc. Es sollte etwa folgendermaßen aussehen:
      /////////////////////////////////////////////////////////////////////// 
      // 
      // 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. Schneiden Sie die Ressource aus der Datei MyProject.rc, und fügen Sie ihn in die Datei MyProject.rc2 unter den Kommentar "Add manuell bearbeitet Ressourcen hier." Finden Sie Informationen darüber, was bedeutet, dass jeweils die Felder in der Ressource VERSIONINFO-Ressource-Anweisung in der Hilfe.
  2. Ersetzen Sie FILEVERSION und PRODUCTVERSION Daten mit Makros Sie FILEVER und PRODUCTVER. Ersetzen Sie die Zeichenfolgendaten FileVersion und ProductVersion durch die Makros STRFILEVER und STRPRODUCTVER.
  3. Fügen Sie eine #include VersionNo.h unmittelbar vor der Anweisung Ressource VS_VERSION_INFO zulässig. Jetzt wird die Versionsressource aussehen:
    /////////////////////////////////////////////////////////////////////// 
    // 
    // 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. Erstellen Sie eine Headerdatei namens VersionNo.h im selben Verzeichnis wie das Projekt. Diese Datei enthält die folgenden Anweisungen, die die Definitionen für die in Schritt 2 verwendeten Makros sind:
    #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"
    						
    Hinweis: Fügen Sie Zeichen für Zeilenvorschub- und Wagenrücklaufzeichen in der letzten Zeile hinzu.

    Jetzt MyProject.rc Datei enthält MyProject.rc2 und MyProject.rc2-Datei VersionNo.h enthält.
  5. Inhalt der Datei VersionNo.h werden mit einem Makro Visual Basic-Skript geändert werden. Das Makro beschriebenen unten Handles das Visual C++-BuildFinish-Ereignis, damit es nicht ausgelöst wird, bis ein Build abgeschlossen wird. Wenn dieses VB-Script-Code aufgerufen wird, zuerst die Versionsnummern in der Header-Datei um einen festen Betrag inkrementiert, dann speichert die Datei und schließt sie. Während eines nachfolgenden Erstellungsvorgangs befindet sich die neue Versionsnummer in der ausführbaren Datei.

    Zum Installieren und Verwenden des VB-Script-Codes, führen Sie folgende Schritte aus:

    1. Öffnen Sie eine vorhandene Datei DSM (Makro), oder erstellen Sie eine neue Datei des DSM in Visual C++. Um eine neue Datei zu erstellen, klicken Sie auf Neue auf der Datei Wählen Sie im Menü Makro-Datei auf der Dateien Registerkarte, geben sie einen Namen, und klicken Sie auf OK.
    2. Fügen Sie den unten folgenden VB-Skript-Code (eine leere DSM-Datei kann nicht in Visual C++ installiert werden, der nächste Schritt erklärt die Installation):
      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
      								
      HINWEIS: Dieser Code ist ein nicht unterstütztes Beispiel. Sie können es für Ihr Szenario Build ändern.
    3. Installieren Sie die DSM-Datei, wenn es nicht bereits installiert ist. Klicken Sie auf Anpassen auf der Tools im Menü klicken Sie auf der Add-Ins und Makrodateien Registerkarte DSM-Datei, und klicken Sie auf Durchsuchen Schließen.
  6. Wählen Sie MyProject.exe erstellen aus der Erstellen Menü. Nachdem der Build abgeschlossen ist, öffnen Sie die Datei VersionNo.h. Sie können die folgenden Anweisungen enthalten:
    #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"
    						
    Bei der Erstellung des Codes erneut, diese Versionsinformationen in der ausführbaren Datei enthalten, und die Versionsinformationen wird erhöht. Sie können Code in das Makro weiter oben beschriebenen um inkrementeller Versionsnummern zu verhindern, wenn die Builderstellung Fehler einführen.

Informationsquellen

Weitere Informationen über Visual C++-Objektmodell finden Sie unter dem folgenden Thema in der MSDN Library:
http://msdn.Microsoft.com/en-us/library/aa712880 (VS

Weitere Informationen zur Verwendung von VB Script-Makros finden Sie unter dem folgenden Thema in der MSDN Library:
http://msdn.Microsoft.com/en-us/library/aa247202 (VS.60).aspx

Weitere Informationen über VB-Script-Sprache finden Sie unter dem folgenden Thema in der MSDN Library:
http://msdn.Microsoft.com/en-us/library/d1wf56tt (VS

Weitere Informationen über die Visual C++-VERSIONINFO Resource-Anweisung finden Sie unter dem folgenden Thema in der MSDN Library:
http://msdn.Microsoft.com/en-us/library/aa381043.aspx

Eigenschaften

Artikel-ID: 237870 - Geändert am: Donnerstag, 31. Oktober 2013 - Version: 5.0
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Visual C++ 5.0 Enterprise Edition
  • Microsoft Visual C++ 5.0 Professional Edition
Keywords: 
kbautomation kbdevstudio kbhowto kbide kbscript kbvcobj kbmt KB237870 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell übersetzt und wird dann möglicherweise mithilfe des Community Translation Framework (CTF) von Mitgliedern unserer Microsoft Community nachbearbeitet. Weitere Informationen zu CTF finden Sie unter http://support.microsoft.com/gp/machine-translation-corrections/de.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 237870
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

Kontaktieren Sie uns, um weitere Hilfe zu erhalten

Kontaktieren Sie uns, um weitere Hilfe zu erhalten
Wenden Sie sich an den Answer Desk, um professionelle Hilfe zu erhalten.