Как увеличить номер сборки Visual Studio с помощью C ++? - PullRequest
4 голосов
/ 12 марта 2009

У меня есть проект Visual Studio 2008, который создает файл с именем: " Game-Release.exe ".

Это было настроено в Свойства проекта -> C / C ++ -> Linker -> General :

$(OutDir)\$(ProjectName)-Release.exe

Я хотел бы пойти немного дальше, увеличив номер сборки, поэтому у меня будет что-то, что говорит:

Game-Release-Build-1002.exe

Число в конце должно быть увеличивающимся целым числом. Я буду хранить exe-сборку на Subversion, так что я думаю, что я нашел бы это полезным (хотя и не обязательным).

Возможно, в Visual Studio есть встроенный макрос, который мог бы справиться с этим. Вполне возможно, я думал, что мог бы иметь текстовый файл с номером сборки в нем, и компилятор мог читать, использовать и увеличивать число в файле при каждой сборке проекта. Однако моя цель - сделать процесс максимально автоматизированным. Каков наилучший способ сделать это?

Если вы предлагаете свое мнение, просьба также предоставить код, которым мы все можем поделиться. Thnx.

Ответы [ 5 ]

3 голосов
/ 12 марта 2009

Надстройка с управлением версиями выглядит так, как будто она справилась бы с работой.

Обновление: В вашем вопросе конкретно упоминается использование Visual Studio для увеличения версии, но в этом нет ничего автоматизированного. Вы рассматривали возможность использования Nant и CI-сервера? Таким образом, легко внедрить номер редакции SVN в AssemblyInfo.cs, эквивалентный C ++. Автоматически, на сервере сборки.

1 голос
/ 02 июля 2015

Если вы используете svn для создания версии своего проекта, вы можете следовать инструкциям в по этой ссылке , она отлично работает для меня, потому что я могу отслеживать ошибки в приложении выпуска, используя информацию о версии и сравнивая исходный код.

Вся информация ниже не включена в ссылку:

  • настройте свой rc-файл следующим образом version.rc

    #include "resource.h" 
    #include "version.h" //<-----------Don't forget the include
    /////////////////////////////////////////////////////////////////////////////
    //
    // Version.rc
    //
    VS_VERSION_INFO VERSIONINFO
     FILEVERSION VER_FILE_VERSION
     PRODUCTVERSION VER_PRODUCT_VERSION
     FILEFLAGSMASK 0x17L
    #ifdef _DEBUG
     FILEFLAGS 0x1L
    #else
     FILEFLAGS 0x0L
    #endif
     FILEOS 0x4L
     FILETYPE 0x1L
     FILESUBTYPE 0x0L
    BEGIN
        BLOCK "StringFileInfo"
        BEGIN
            BLOCK "040704b0"
            BEGIN
                VALUE "CompanyName", "Your Company Name"
                VALUE "FileDescription", "Your Application Description"
                VALUE "FileVersion", VER_FILE_VERSION_STR "\0"
                VALUE "InternalName", "Internal Name"
                VALUE "LegalCopyright", "CopyRight stuff - Copyright (C) 2015"
                VALUE "OriginalFilename", "yourapp.exe"
                VALUE "ProductName", "Your Application"
                VALUE "ProductVersion", VER_PRODUCT_VERSION_STR "\0"
            END
        END
        BLOCK "VarFileInfo"
        BEGIN
            VALUE "Translation", 0x407, 1200
        END
    END
    
  • Далее добавьте version.h файл в ваш проект, который определяет все, настройте так:

    #include "svn_version.h"
    
    #define STRINGIZE2(s) #s
    #define STRINGIZE(s) STRINGIZE2(s)
    
    #define VERSION_MAJOR             1
    #define VERSION_MINOR             0
    #define VERSION_REVISION          SVN_REVISION
    #define VERSION_BUILD               0
    
    #if SVN_LOCAL_MODIFICATIONS
       #define VERSION_MODIFIER "M"
    #else
       #define VERSION_MODIFIER
    #endif
    
    #define VER_FILE_VERSION   VERSION_MAJOR, VERSION_MINOR, VERSION_REVISION, VERSION_BUILD
    #define VER_FILE_VERSION_STR        STRINGIZE(VERSION_MAJOR)        \
    "." STRINGIZE(VERSION_MINOR)    \
    "." STRINGIZE(VERSION_REVISION) \
    "." STRINGIZE(VERSION_BUILD)    \
    
    #define VER_PRODUCT_VERSION         VER_FILE_VERSION
    #define VER_PRODUCT_VERSION_STR     VER_FILE_VERSION_STR
    

после этого вы можете перейти по ссылке выше.

0 голосов
/ 30 мая 2010

Мой собственный подход, включая печать двоичных файлов:

http://indiocolifax86.wordpress.com/2010/05/22/a-scheme-for-automatic-build-numbers-in-cc-projects/

0 голосов
/ 12 марта 2009

Я использую сценарий предварительной сборки (написанный на JavaScript и выполняемый с использованием механизма cscript.exe), который определяет основной / вспомогательный выпуск, получает номер версии SVN и генерирует магический номер сборки на основе текущей даты. Затем сценарий создает файл version.h, который используется основным приложением (и файлом ресурсов основного приложения для создания ресурса VERSION).

0 голосов
/ 12 марта 2009

Я не уверен, что VS2008 имеет эту функцию, но я думаю, что вы можете сделать это с событием post-linker, которое запускает небольшой скрипт, который делает задачу за вас.

...