4

Ich habe ein Visual Studio 2008-Projekt, das eine Datei erstellt mit dem Namen: "Game-Release.exe".Wie erhöhen Sie Visual Studio Build-Nummer mit C++?

Dies wurde so konfiguriert, unter Projekteigenschaften ->C/C++ ->Linkers ->Allgemeine:

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

Ich möchte diese ein wenig weiter gehen, indem sie ein Inkrementieren haben Build-Nummer, so würde ich etwas haben, was sagt:

Game-Release-Build-1002.exe 

Die Nummer Am Ende sollte eine inkrementierende Ganzzahl sein. Ich werde die Build-Exe auf Subversion speichern, also denke ich, dass ich das nützlich finden würde (obwohl nicht notwendig).

Vielleicht gibt es ein eingebautes Makro in Visual Studio, das damit umgehen könnte. Ziemlich wahrscheinlich dachte ich, ich könnte eine Textdatei mit der Build-Nummer darin haben und den Compiler lesen, verwenden und die Nummer in der Datei jedes Mal erhöhen, wenn das Projekt gebaut wird. Mein Ziel ist es jedoch, den Prozess so automatisiert wie möglich zu machen. Was ist der beste Weg, dies zu erreichen?

Wenn Sie eine Meinung abgeben, geben Sie bitte auch den Code an, den wir alle teilen können. Thnx.

Antwort

3

Das Versioning Controlled Build Add-In scheint, als würde es die Arbeit tun.

Update: Ihre Frage erwähnt speziell mit Visual Studio, um die Version zu inkrementieren, aber es gibt nichts, das über das automatisiert wird. Haben Sie in Betracht gezogen, Nant und einen CI-Server zu verwenden? Auf diese Weise ist es einfach, die SVN-Revisionsnummer in AssemblyInfo.cs für C++ einzugeben. Automatisch auf dem Build-Server.

0

Ich bin nicht sicher, VS2008 hat diese Funktion, aber ich denke, Sie können es mit einem Post-Linker-Ereignis, das ein kleines Skript, das die Aufgabe für Sie ausführen.

0

Ich benutze ein Pre-Build-Skript (geschrieben in JavaScript und ausgeführt mit der cscript.exe-Engine), das die Major/Minor-Version definiert, die SVN-Revisionsnummer und generiert eine magische Build-Nummer basierend auf dem aktuellen Datum. Das Skript erstellt dann eine version.h-Datei, die von der Hauptanwendung (und von der Haupt-apps-Ressourcendatei zum Erstellen einer VERSION-Ressource) verwendet wird.

+2

Klingt gut. Möchtest du es dann posten? –

1

Wenn Sie auf die Version Ihres Projekts svn verwenden Sie die Anweisungen in this link folgen könnte es perfekt funktioniert für mich, weil ich Fehler in einer Spur kann Release-Anwendung unter Verwendung seiner Versionsinformationen und Vergleichen des Quellcodes.

Alle folgenden Informationen ist in der Verbindung nicht inbegriffen:

  • Setup Ihre rc-Datei wie diese 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 
    
  • Next hinzufügen version.h Datei zu einem Projekt, das alles, Setup wie folgt definiert:

    #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 
    

nach diesem Sie die link oben folgen können.