Como incrementar as informações de versão após cada compilação no Visual C++

Traduções deste artigo Traduções deste artigo
ID do artigo: 237870 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Sumário

O Visual C++ não tem um recurso para incrementar automaticamente as informações de recurso de versão do seu projeto após cada compilação. Este artigo descreve uma maneira de fornecer um recurso.

Mais Informações

Você pode escrever um programa para modificar o arquivo de compilador (.rc) de recursos em vez de usar as etapas descritas aqui. No entanto, o arquivo RC está sob o controle do Visual C++. O Visual C++ modifica o arquivo RC ao salvar, e isso pode afetar o recurso de versão. A abordagem descrita nesta seção pode ser aplicada a qualquer projeto Visual C++. Este exemplo usa um projeto Microsoft Foundation Classes.

Crie um novo projeto usando Appwizard MFC (EXE) e chamá-lo MyProject . MyProject terá um arquivo MyProject.rc, que inclui MyProject.rc2. O arquivo .RC2 é destinado a recursos definidos pelo usuário. Siga estas etapas para incrementar informações de versão do MyProject após cada compilação:
  1. Remova o recurso de versão do arquivo .rc e coloque-no arquivo .RC2:

    1. Abra MyProject.rc e MyProject.rc2 (encontrado na pasta resposta), em um editor de texto. Para usar o editor do Visual C++, clique em Abrir no menu arquivo e selecione o texto na lista Abrir como para o arquivo MyProject.rc.
    2. Localizar a versão recurso instruções em MyProject.rc. Ele deve ser semelhante:
      /////////////////////////////////////////////////////////////////////// 
      // 
      // 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. Recortar o recurso de versão do arquivo MyProject.rc e cole-o no arquivo MyProject.rc2 abaixo do comentário "Adicionar editados manualmente recursos aqui." Para obter informações sobre o que significa cada um dos campos do recurso, consulte a declaração de recurso VERSIONINFO na Ajuda.
  2. Substitua os dados FILEVERSION e PRODUCTVERSION macros FILEVER e PRODUCTVER. Da mesma forma, substitua os dados de seqüência de caracteres FileVersion e ProductVersion macros STRFILEVER e STRPRODUCTVER.
  3. Adicionar um # incluir VersionNo.h imediatamente antes da instrução de recurso VS_VERSION_INFO. Agora o recurso de versão será a aparência, como:
    /////////////////////////////////////////////////////////////////////// 
    // 
    // 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. Crie um arquivo de cabeçalho chamado VersionNo.h no mesmo diretório do seu projeto. Esse arquivo irá conter as seguintes instruções, que são as definições para macros utilizadas na etapa 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"
    						
    Observação: Adicionar carro e alimentação de linha retornam caracteres na última linha.

    Agora, o arquivo MyProject.rc inclui MyProject.rc2 e MyProject.rc2 arquivo inclui VersionNo.h.
  5. O conteúdo do arquivo VersionNo.h será modificado usando uma macro do Visual Basic Script. A macro descritos abaixo alças de evento Visual C++ BuildFinish, portanto, ele não será acionado até que uma compilação seja concluída. Sempre que esse código de script de VB é chamado, ele incrementa primeiro os números de versão dentro do arquivo de cabeçalho em uma quantidade fixa, ele salva o arquivo e fechá-lo. Durante uma compilação subseqüente, o número de versão nova é incluído no executável.

    Para instalar e usar o código de script de VB, faça o seguinte:

    1. Abra um arquivo DSM (macro) existente ou crie um novo arquivo DSM no Visual C++. Para criar um novo arquivo, clique em novo no menu arquivo , selecione Arquivo de macro na guia arquivos , dê a ele um nome e clique em OK .
    2. Cole o seguinte código VB script abaixo (um arquivo DSM vazio não pode ser instalado no Visual C++; a próxima etapa explica a instalação):
      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
      								
      Observação: este código é um exemplo sem suporte. Você pode modificá-lo para seu cenário de compilação.
    3. Instale o arquivo DSM se ele já não estiver instalado. Para instalar, clique em Personalizar no menu Ferramentas , clique na guia Add-in e arquivos de macro , procure e selecione o arquivo DSM e clique em Fechar .
  6. Selecione MyProject.exe Build no menu Build . Depois que termina a compilação, abra o arquivo VersionNo.h. Ele irá conter as instruções a seguir:
    #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 você cria o código novamente, essas informações de versão no incluídos no executável e as informações de versão são incrementadas. Você pode introduzir algum código em macro descrito anteriormente para evitar incremento números de versão se a compilação produzido erros.

Referências

Para obter mais informações sobre o modelo de objeto do Visual C++ consulte o tópico a seguir na biblioteca do MSDN:
http://msdn.microsoft.com/en-us/library/aa712880(VS.71).aspx

Para obter mais informações sobre macros VB script, consulte o tópico a seguir na biblioteca do MSDN:
http://msdn.microsoft.com/en-us/library/aa247202(VS.60).aspx

Para obter mais informações sobre linguagem de script de VB, consulte o tópico a seguir na biblioteca do MSDN:
http://msdn.microsoft.com/en-us/library/d1wf56tt(vs.71).aspx

Para obter mais informações sobre a instrução de recurso do Visual C++ VERSIONINFO, consulte o tópico a seguir na biblioteca do MSDN:
http://msdn.microsoft.com/en-us/library/aa381043.aspx

Propriedades

ID do artigo: 237870 - Última revisão: sexta-feira, 2 de setembro de 2005 - Revisão: 3.2
A informação contida neste artigo aplica-se 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
Palavras-chave: 
kbmt kbautomation kbdevstudio kbhowto kbide kbscript kbvcobj KB237870 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 237870

Submeter comentários

 

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