Visual C++ não tem uma funcionalidade para incrementar automaticamente as informações de recurso de versão do projecto depois de cada versão. Este artigo descreve uma forma de fornecer uma funcionalidade tal.
Pode escrever um programa para modificar o ficheiro do compilador (.rc) de recursos em vez de utilizar os passos descritos aqui. No entanto, o ficheiro RC está sob o controlo do Visual C++. Visual C++ modifica o ficheiro ao guardar RC e isto pode afectar o recurso de versão. A abordagem descrita nesta secção pode ser aplicada a qualquer projecto de Visual C++. Este exemplo utiliza um projecto de Microsoft Foundation Classes.
Crie um novo projecto utilizando Appwizard MFC (EXE) e chamá-lo MyProject . MyProject terá um ficheiro MyProject.rc, que inclui MyProject.rc2. O ficheiro .RC2 destina-se recursos definida pelo utilizador. Siga estes passos para incrementar versão informações do MyProject após cada compilação:
Remova o recurso de versão do ficheiro .rc e coloque-o no ficheiro .RC2:
Abra MyProject.rc e MyProject.rc2 (localizado na pasta res), num editor de texto. Para utilizar o editor do Visual C++, clique em Abrir no menu ficheiro e seleccione o texto na lista Como abrir o ficheiro MyProject.rc.
Localize a versão recurso instruções MyProject.rc. 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
Cortar o recurso de versão do ficheiro MyProject.rc e cole-o no ficheiro MyProject.rc2 abaixo do comentário "Adicionar editada manualmente recursos aqui." Para obter informações sobre o que significa cada um dos campos de recurso, consulte a declaração de recurso VERSIONINFO na ajuda.
Substitua os dados FILEVERSION e PRODUCTVERSION macros FILEVER e PRODUCTVER. Do mesmo modo, substitua os dados de cadeia FileVersion e ProductVersion macros STRFILEVER e STRPRODUCTVER.
Adicionar um # incluir VersionNo.h imediatamente antes da instrução de recurso VS_VERSION_INFO. Agora o recurso de versão aspecto 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
Crie um ficheiro cabeçalho chamado VersionNo.h no mesmo directório que o projecto. Este ficheiro conterá as seguintes instruções que são as definições de macros que utilizou no passo 2:
Nota: Adicionar avanço de linha e símbolos de retorno devolvem caracteres na última linha.
Agora, MyProject.rc ficheiro inclui MyProject.rc2 e MyProject.rc2 ficheiro inclui VersionNo.h.
O conteúdo do ficheiro VersionNo.h será modificado utilizando uma macro de script do Visual Basic. A macro descrita abaixo alças o evento do Visual C++ BuildFinish modo-não irá ser desencadeado até uma compilação completa. Sempre que este código VB script for chamado, primeiro incrementa os números de versão dentro do cabeçalho de ficheiro por um valor fixo e guarda o ficheiro e fecha-a. Durante a compilação subsequente, o novo número de versão está incluído no executável.
Para instalar e utilizar o código VB script, efectue o seguinte:
Abra um ficheiro DSM (macro) existente ou crie um novo ficheiro DSM no Visual C++. Para criar um novo ficheiro, clique em Novo no menu ficheiro , seleccione Ficheiro de macro no separador ficheiros , atribua um nome e clique em OK .
Cole o seguinte código VB script abaixo (um ficheiro DSM vazio não pode ser instalado no Visual C++; o passo seguinte explica instalar):
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: este código é um exemplo não suportado. Pode modificá-lo para o cenário de compilação.
Instale o ficheiro DSM se não estiver instalado. Para instalar, clique em ' Personalizar ' no menu Ferramentas , clique no separador suplementos e ficheiros de macro , procure e seleccione o ficheiro DSM e clique em Fechar .
Seleccione Criar MyProject.exe menu criar . Depois de concluir a compilação, abra o ficheiro VersionNo.h. Irá conter as seguintes instruções:
se criar o código novamente, estas informações de versão na incluído no executável e as informações sobre a versão são incrementadas. É possível introduzir algum código na macro descrito anteriormente para evitar sucessivamente incrementado números de versão se a compilação produzida erros.
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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 237870
Obrigado! Os seus comentários são utilizados para ajudar-nos a melhorar o conteúdo do nosso suporte. Para obter mais opções de assistência, visite a Home Page de Ajuda e Suporte.