Come incrementare le informazioni sulla versione dopo ogni generazione in Visual c ++

Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell’utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell’utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.

Clicca qui per visualizzare la versione originale in inglese dell’articolo: 237870
Questo articolo è stato archiviato. L’articolo, quindi, viene offerto “così come è” e non verrà più aggiornato.
Sommario
In Visual c ++ non dispone di una funzionalità per incrementare automaticamente le informazioni sulla risorsa di versione del progetto dopo ogni generazione. Questo articolo viene descritto un modo per fornire funzionalità di tali.
Informazioni
È possibile scrivere un programma per modificare il file (RC) del compilatore di risorse invece di utilizzare la procedura descritta di seguito. Tuttavia, il file RC è sotto il controllo di Visual c ++. In Visual c ++ modifica il file RC durante il salvataggio e questo potrebbe influenzare la risorsa di versione. L'approccio descritto in questa sezione può essere applicato a qualsiasi progetto di Visual c ++. In questo esempio viene utilizzato un progetto MFC.

Creare un nuovo progetto utilizzando la AppWizard di MFC (EXE) e chiamare a tale progetto . Che il progetto verrà MyProject.rc file sia, che include MyProject.rc2. Il file RC2 è destinato a risorse definite dall'utente. Attenersi alla seguente procedura per l'incremento di informazioni di versione del progetto dopo ogni generazione:
  1. Rimuovere la risorsa di versione dal file RC e inserirlo nel file RC2:

    1. Aprire sia MyProject.rc e MyProject.rc2 (presente nella cartella res), in un editor di testo. Per utilizzare l'editor di Visual c ++, è necessario fare clic su Apri dal menu file e selezionare testo nell'elenco Apri come per il file MyProject.rc.
    2. Trovare la versione risorsa istruzioni in MyProject.rc. Sarà simile:
      /////////////////////////////////////////////////////////////////////// // // 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 0x0LBEGIN    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    ENDEND							
    3. Tagliare la risorsa di versione dal file MyProject.rc e incollarlo nel file MyProject.rc2 sotto il commento "Aggiungi modificati manualmente le risorse qui". Per informazioni sul significato di ognuno dei campi della risorsa, vedere l'istruzione di risorsa VERSIONINFO in Guida in linea.
  2. Sostituire i dati /FileVersion e PRODUCTVERSION con le macro FILEVER e PRODUCTVER. Allo stesso modo, è possibile sostituire i dati della stringa FileVersion e ProductVersion con le macro STRFILEVER e STRPRODUCTVER.
  3. Aggiungere un # includere VersionNo.h immediatamente prima dell'istruzione di risorsa VS_VERSION_INFO. Ora la risorsa di versione sarà, ad esempio:
    /////////////////////////////////////////////////////////////////////// // // 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 0x0LBEGIN    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    ENDEND					
  4. Creare un file di intestazione denominato VersionNo.h nella stessa directory del progetto. Questo file conterrà le seguenti istruzioni, sono le definizioni per le macro utilizzate nel passaggio 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"						
    Nota: Aggiungi avanzamento riga e ritorni a capo restituire caratteri nell'ultima riga.

    A questo punto, file MyProject.rc include MyProject.rc2 e file MyProject.rc2 include VersionNo.h.
  5. Verrà modificato il contenuto del file VersionNo.h utilizzando una macro di Visual Basic Script. La macro descritto di seguito gestisce l'evento di Visual c ++ BuildFinish, in modo che verrà non essere generato finché non viene completata una generazione. Ogni volta che viene chiamato questo codice VB script, di incrementare prima i numeri di versione all'interno del file di intestazione base un valore fisso, quindi viene salvato il file e si chiude. Durante una generazione successiva, il nuovo numero di versione è incluso nell'eseguibile.

    Per installare e utilizzare il codice VB script, effettuare le seguenti operazioni:

    1. Aprire un file DSM (macro) esistente o creare un nuovo file DSM in Visual c ++. Per creare un nuovo file, scegliere Nuovo dal menu file , selezionare il File di macro nella scheda file , assegnare un nome e fare clic su OK .
    2. Incollare il seguente codice di VB script riportato di seguito (Impossibile installare un file DSM vuoto in Visual c ++; il passaggio successivo viene illustrato l'installazione):
      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 functionDim proj_pathproj_path = Split(StrReverse(FullName),"\",-1,1)Dim countcount = UBound(proj_path)Dim full_pathfull_path = ""Dim ifor i = 1 to count 	full_path = full_path & "\" & proj_path(i)nextGetProjectDir = StrReverse(full_path)End FunctionSub 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 numberselection.WordRight dsMove, countselection.WordRight dsExtend, 1Dim strstr = selection.Textstr = str + incrementbyselection.Text = strEnd SubSub 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 projectDim full_pathfull_path = GetProjectDir(ActiveProject.FullName)full_path = full_path & "versionno.h"'Open the VersionNo.h fileDocuments.Open full_path'Obtain the TextSelection objectDim selectionset selection = ActiveDocument.Selectionselection.StartOfDocument 'Increment the version informationReplaceText selection, 9, 1selection.LineDownselection.StartOfLineReplaceText selection, 9, 1selection.LineDownselection.StartOfLineReplaceText selection, 10, 1selection.LineDownselection.StartOfLineReplaceText selection, 10, 1ActiveDocument.SaveActiveDocument.Close End Sub								
      Nota: questo codice è un esempio non supportato. È possibile modificarlo per lo scenario di generazione.
    3. Se non è già installato, installare il file di DSM. Per installare, scegliere Personalizza dal menu Strumenti , scegliere la scheda aggiuntivi e Macro Files , selezionare il file DSM e fare clic su Chiudi .
  6. Scegliere Genera MyProject.exe dal menu Genera . Al termine della generazione, aprire il file di VersionNo.h. Conterrà le istruzioni riportate di seguito:
    #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"						
    se si genera il codice, le informazioni di versione in incluso nel file eseguibile e le informazioni sulla versione viene incrementati. È possibile introdurre codice nella macro descritto in precedenza per evitare che i numeri di versione incrementale se la generazione degli errori.
Riferimenti
Per ulteriori informazioni sul modello di oggetti Visual c ++ vedere l'argomento della MSDN library riportato di seguito:
Per ulteriori informazioni sulle macro di VB script, vedere l'argomento riportato di seguito in MSDN library:
Per ulteriori informazioni sul linguaggio VB script, vedere l'argomento riportato di seguito in MSDN library:
Per ulteriori informazioni sull'istruzione risorsa VERSIONINFO di Visual c ++, vedere l'argomento riportato di seguito in MSDN library:

Avviso: questo articolo è stato tradotto automaticamente

Proprietà

ID articolo: 237870 - Ultima revisione: 12/05/2015 15:18:13 - Revisione: 3.2

Microsoft Visual C++ 5.0 Enterprise Edition, Microsoft Visual C++ 6.0 Enterprise Edition, Microsoft Visual C++ 5.0 Professional Edition, Microsoft Visual C++ 6.0 Professional Edition, Microsoft Visual C++, 32-bit Learning Edition 6.0

  • kbnosurvey kbarchive kbmt kbautomation kbdevstudio kbhowto kbide kbscript kbvcobj KB237870 KbMtit
Feedback