Visual C++ kein Feature automatisch die Ressourceninformationen Version des Projekts nach jedem Build erhöht. Dieser Artikel beschreibt eine Möglichkeit, eine solche Funktion bereitstellen.
Schreiben Sie ein Programm zum Ändern der Ressourcen-Compiler (.rc)-Datei anstelle der beschriebenen Schritte hier. Allerdings ist die RC-Datei unter der Kontrolle der Visual C++. Visual C++ ändert die RC-Datei beim Speichern, und dies beeinträchtigen der Versionsressource. Das in diesem Abschnitt beschriebenen Verfahren kann alle Visual C++-Projekt angewendet werden. In diesem Beispiel wird ein Projekt Microsoft Foundation Classes verwendet.
Erstellen Sie ein neues Projekt unter Verwendung der MFC (EXE) Appwizard und rufen Sie es MyProject . MyProject haben eine Datei MyProject.rc MyProject.rc2 enthält. Die RC2-Datei ist für benutzerdefinierte Ressourcen vorgesehen. Gehen Sie folgendermaßen des MyProject Versionsinformationen nach jedem Build erhöht vor:
Entfernen Sie die Versionsressource aus der RC-Datei und in die RC2-Datei:
Öffnen Sie MyProject.rc und MyProject.rc2 (im Ordner "Auflösung" gefunden), in einem Texteditor. Um Visual C++-Editor verwenden, klicken Sie im Menü Datei auf Öffnen , und wählen Sie Text in der Liste Öffnen als für die Datei MyProject.rc.
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
Die Versionsressource aus der Datei MyProject.rc Ausschneiden und in der MyProject.rc2-Datei unter dem Kommentar "Add bearbeitet manuell Ressourcen hier." Einfügen Finden Sie Informationen dazu, was bedeutet, jeweils die Felder in der Ressource dass unter der VERSIONINFO-Ressource-Anweisung in der Hilfe.
Ersetzen Sie die FILEVERSION und PRODUCTVERSION-Daten mit Makros FILEVER und PRODUCTVER. Ersetzen Sie entsprechend die FileVersion und ProductVersion Zeichenfolge-Daten mit den Makros STRFILEVER und STRPRODUCTVER.
Fügen Sie eine # VersionNo.h unmittelbar vor der VS_VERSION_INFO Ressource-Anweisung enthalten. Jetzt die Versionsressource aussieht wie:
///////////////////////////////////////////////////////////////////////
//
// 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
Erstellen Sie eine Headerdatei in demselben Verzeichnis wie das Projekt VersionNo.h aufgerufen. Diese Datei enthält die folgenden Anweisungen, die die Definitionen für Makros, die in Schritt 2 verwendet werden:
Hinweis: Add Zeilenvorschub- und Wagenrücklaufzeichen Zeichen in der letzten Zeile zurückgeben.
Nun, MyProject.rc-Datei enthält MyProject.rc2 und MyProject.rc2 Datei VersionNo.h enthält.
Den Inhalt der Datei VersionNo.h werden mit einem Makro Visual Basic-Skript geändert. Das Makro aufgeführten behandelt das Visual C++-BuildFinish-Ereignis, damit es nicht ausgelöst wird, bis ein Build abgeschlossen ist. Wenn in diesem VBScript-Code aufgerufen wird, es erhöht die Versionsnummern in der Headerdatei zuerst, um einen festen Betrag, und es speichert die Datei und schließt es. Während eines nachfolgenden Builds ist die neue Versionsnummer in der ausführbaren Datei enthalten.
Installieren und verwenden Sie den VBScript-Code, gehen Sie folgendermaßen vor:
Öffnen einer vorhandenen Datei DSM (Makro) oder erstellen Sie eine neue DSM-Datei in Visual C++. Erstellen Sie eine neue Datei, klicken Sie im Menü Datei auf neu , Makrodatei auf der Registerkarte Dateien auswählen, geben Sie einen Namen ein, und klicken Sie auf OK .
Fügen Sie den folgenden VBScript-Code unten (eine leere DSM-Datei kann nicht in Visual C++ installiert werden; die nächste Schritt erläutert installieren):
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 für Ihr Szenario Build ändern.
Installieren Sie die DSM-Datei, wenn es nicht bereits installiert ist. Installieren möchten, klicken Sie im Menü Extras auf Anpassen , klicken Sie auf die Registerkarte Add-Ins und Makrodateien , Durchsuchen Sie, um die DSM-Datei auszuwählen und klicken Sie auf Schließen .
Im Build MyProject.exe erstellen auswählen. Nachdem das Build abgeschlossen ist, öffnen Sie die VersionNo.h-Datei. Es werden die folgenden Anweisungen enthalten:
Wenn Sie den Code erneut, diese Versionsinformationen in in der ausführbaren Datei enthalten erstellen, und die Versionsinformationen wird erhöht. Stellen Sie vor einigen Code in das Makro beschriebenen erhöht Versionsnummern verhindern, wenn das Build Fehler erzeugt.
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 237870
(http://support.microsoft.com/kb/237870/en-us/
)
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.
Danke! Dieses Feedback hilft uns dabei, die Supportartikel weiter zu verbessern. Weitere Informationen finden Sie auf der Hilfe und Support-Startseite.