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

Traduzione articoli Traduzione articoli
Identificativo articolo: 237870 - Visualizza i prodotti a cui si riferisce l?articolo.
Espandi tutto | Chiudi tutto

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 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. 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 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. 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 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
      								
      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:
http://msdn.microsoft.com/en-us/library/aa712880(VS.71).aspx

Per ulteriori informazioni sulle macro di VB script, vedere l'argomento riportato di seguito in MSDN library:
http://msdn.microsoft.com/en-us/library/aa247202(VS.60).aspx

Per ulteriori informazioni sul linguaggio VB script, vedere l'argomento riportato di seguito in MSDN library:
http://msdn.microsoft.com/en-us/library/d1wf56tt(vs.71).aspx

Per ulteriori informazioni sull'istruzione risorsa VERSIONINFO di Visual c ++, vedere l'argomento riportato di seguito in MSDN library:
http://msdn.microsoft.com/en-us/library/aa381043.aspx

Proprietā

Identificativo articolo: 237870 - Ultima modifica: venerdė 2 settembre 2005 - Revisione: 3.2
Le informazioni in questo articolo si applicano a:
  • 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
Chiavi: 
kbmt kbautomation kbdevstudio kbhowto kbide kbscript kbvcobj KB237870 KbMtit
Traduzione automatica articoli
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
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

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