Как увеличить сведения о версии после каждой сборки в Visual C++

ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.

Эта статья на английском языке:237870
Эта статья помещена в архив. Она предлагается "как есть" и обновляться не будет.
Аннотация
Visual C++ не поддерживает функции автоматического приращения сведений о ресурсе версий проекта после каждой сборки. В данной статье описывается один из способов предоставления таких функций.
Дополнительная информация
Можно написать программу, чтобы изменить файл ресурсов (.rc) компилятор вместо действия, описанные здесь. Тем не менее RC-файл находится под контролем Visual C++. Visual C++ изменяет RC-файла при сохранении, и это может повлиять на ресурс версии. Подход, описанный в этом разделе могут применяться к любому проекту Visual C++. В этом примере используется проект классов.

Создание нового проекта с помощью Appwizard MFC (EXE) и вызывать его Мой проект. Мой проект будет файл MyProject.rc, который включает в себя MyProject.rc2. RC2-файл предназначен для определяемых пользователем ресурсов. Выполните следующие действия для увеличения его MyProject сведения о версии после каждой сборки.
  1. Удаление ресурса версии RC-файл и поместите его в RC2-файла:

    1. Откройте в текстовом редакторе, MyProject.rc и MyProject.rc2 (находится в папке Res). Чтобы использовать редактор Visual C++, щелкните Открыть В меню Файл и выбрать пункт Текст В диалоговом окне Открыть как список для файла MyProject.rc.
    2. В поисках версии инструкции ресурсов в MyProject.rc. Он должен выглядеть примерно так:
      /////////////////////////////////////////////////////////////////////// // // 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. Вырезать ресурса версии файла MyProject.rc и вставьте его в файл MyProject.rc2 под комментарием «Добавить здесь вручную отредактированные ресурсы.» О том, что означает каждое одно из полей ресурса выписку VERSIONINFO ресурсов в справке.
  2. Замените данные FILEVERSION и PRODUCTVERSION макросы FILEVER и PRODUCTVER. Аналогичным образом замените макросы, STRFILEVER и STRPRODUCTVER FileVersion и ProductVersion строковых данных.
  3. Добавление # include VersionNo.h непосредственно перед оператором ресурса VS_VERSION_INFO. Теперь версия ресурса будет выглядеть так:
    /////////////////////////////////////////////////////////////////////// // // 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. Создайте файл заголовка с именем VersionNo.h в каталоге проекта. Этот файл будет содержать следующие инструкции, которые являются определениями для макросов, используемый на этапе 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"						
    Примечание: Добавление символов возврата каретки и перевода строки в последней строке.

    Теперь включает файл MyProject.rc MyProject.rc2 и MyProject.rc2 файл, содержащий VersionNo.h.
  5. Содержимое файла VersionNo.h будет изменен с помощью макроса Visual Basic Script. Макрос ниже дескрипторы событий Visual C++ BuildFinish так, чтобы она не запускается до завершения построения. При каждом вызове этого кода сценарий VB сначала увеличивает номера версии в файле заголовка на фиксированную сумму, а затем она сохраняет файл, а затем закрывается. При последующем построении номер новой версии включается в исполняемый файл.

    Чтобы установить и использовать сценарий VB кода, выполните следующие действия:

    1. Открытие существующего файла DSM (макрос) или создать новый файл DSM в Visual C++. Чтобы создать новый файл, нажмите кнопку Новый В меню Файл Выберите пункт Файл макроса В меню Файлы на вкладке, присвойте ему имя и нажмите кнопку ОК.
    2. Вставьте следующий сценарий VB код ниже (в Visual C++ невозможно установить пустой файл DSM; объясняется следующим шагом установки):
      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								
      ПРИМЕЧАНИЕ: Этот код является образцом не поддерживается. Для построения сценария может изменить его.
    3. Установка файла DSM, если он еще не установлен. Для установки, нажмите кнопку Настройка В меню Сервис меню, нажмите кнопку Добавить в систему и файлы макросов вкладке Обзор для выбора файла DSM и нажмите кнопку Закрыть.
  6. Выберите Создание MyProject.exe из Построение меню. После завершения построения откройте файл VersionNo.h. Он будет содержать следующие инструкции:
    #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"						
    При построении код еще раз, эти сведения в включается в исполняемый файл, и сведения о версии увеличивается. Можно ввести часть кода в макросе, предотвращения приращение номера версий, если построение созданных ошибок, описанных выше.
Ссылки
Дополнительные сведения о модели объекта Visual C++ разделу в библиотеке MSDN:
Дополнительные сведения о макросах сценарий VB разделу в библиотеке MSDN:
Дополнительные сведения о языке сценарий VB разделу в библиотеке MSDN:
Дополнительные сведения об операторе ресурсов Visual C++ VERSIONINFO разделу в библиотеке MSDN:

Внимание! Эта статья переведена автоматически

Свойства

Номер статьи: 237870 — последний просмотр: 12/05/2015 15:18:17 — редакция: 4.0

Microsoft Visual C++ 5.0 Enterprise Edition, Microsoft Visual C++ 5.0 Professional Edition

  • kbnosurvey kbarchive kbautomation kbdevstudio kbhowto kbide kbscript kbvcobj kbmt KB237870 KbMtru
Отзывы и предложения