Bei Build automatisch die Buildversion hochzählen



  • Moin,

    ich möchte, dass die Buildnummer bei jedem Build um einen erhöht wird. Ich hab auch schon einen schönen Artikel gefunden, aber leider funktioniert das nicht beim Visual Studio .NET...

    Link zum Artikel

    Weiß jemand was ich in dem VB Script ändern muss, damit es auch in der .NET-Version funktioniert?

    Gruß, Manuel. 🙂



  • Nach mehr als einem Tag Arbeit (Ich hatte keine VB Vorkenntnisse!) habe ich ein eigenes Makro geschrieben, welches unter Visual Studio C++ .NET die Build-Version hochzählt. Im Prinzip ist alles zu beachten, was auf der Microsoft-Page steht:

    - #include "VersionNo.h" in DeinTool.rc2
    - Version-Ressource in DeinTool.rc2
    - Definitionen in die VersionNo.h auslagern.

    Die VersionNo.h sieht dann folgendermaßen aus:

    #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"
    

    Wichtig ist, dass nach der letzten Versionszeile noch eine leere Zeile eingefügt wird!

    Mein Makro sieht wie folgt aus:

    Sub BuildVersErhoehen()
    
            Dim oDatei As Object
            Dim tStream
            Dim strDateiPfad, strZeile, strOhneLetzteZahl, strNeueZeile, strNachKomma, strNachPunkt As String
            Dim ProjektPfad As String
            Dim nKomma, nPunkt, nSlash, nLetzteZahl, nZaehler, nNaechsteZahl As Integer
            Dim strZeilen(5)
            Dim Projekte As System.Array
            Dim Projekt As Project
            Const ForReading = 1, ForWriting = 2
    
            Projekte = DTE.ActiveSolutionProjects()
            Projekt = CType(Projekte.GetValue(0), EnvDTE.Project)
            ProjektPfad = Projekt.FullName
            nSlash = InStrRev(ProjektPfad, "\")
            strDateiPfad = Microsoft.VisualBasic.Left(ProjektPfad, nSlash) & "VersionNo.h"
    
            oDatei = CreateObject("Scripting.FileSystemObject")
            tStream = oDatei.OpenTextFile(strDateiPfad, ForReading)
    
            nZaehler = 0
    
            While Not tStream.AtEndOfStream
                If nZaehler <= 1 Then
                    strZeile = tStream.ReadLine
                    nKomma = InStrRev(strZeile, ",")
                    strOhneLetzteZahl = Microsoft.VisualBasic.Left(strZeile, nKomma)
                    nLetzteZahl = Mid(strZeile, nKomma + 1)
                    nNaechsteZahl = nLetzteZahl + 1
                    strNeueZeile = strOhneLetzteZahl & nNaechsteZahl
                    strZeilen(nZaehler) = strNeueZeile
                Else
                    strZeile = tStream.ReadLine
                    nPunkt = InStrRev(strZeile, ".")
                    strOhneLetzteZahl = Microsoft.VisualBasic.Left(strZeile, nPunkt)
                    strNachPunkt = Mid(strZeile, nPunkt + 1)
                    nLetzteZahl = Mid(strNachPunkt, 1, strNachPunkt.Length() - 3)
                    nNaechsteZahl = nLetzteZahl + 1
                    strNeueZeile = strOhneLetzteZahl & nNaechsteZahl & "\0"""
                    strZeilen(nZaehler) = strNeueZeile
                End If
                nZaehler = nZaehler + 1
            End While
            tStream.Close()
    
            tStream = oDatei.OpenTextFile(strDateiPfad, ForWriting)
            For nZaehler = 0 To strZeilen.GetUpperBound(0) - 2
                tStream.WriteLine(strZeilen(nZaehler))
            Next nZaehler
            tStream.Close()
    
        End Sub
    

    Jetzt möchte ich nur noch gerne wissen, wie ich dieses Makro in Visual Studio C++ .NET automatisch vor jedem Erstellen ausführen lasse. Geht das überhaupt?

    Gruß, Manuel. 🙂



  • Programmeigener Schritt in Linkeroptionen, denk ich mal ?



  • Ich sitze immer noch am selben Problem. Ich bekomme es einfach nicht hin. Ich hab schon versucht die devenv.exe mit den nötigen Parametern zu starten, aber dann schließt sich die zweite Entwicklungsumgebung nicht selbständig...

    Das muss doch irgendwie gehen, ich verzweifle echt bald. 😕

    Bin schon kurz davor mir ein MFC-Programm zu basteln, was die selben Sachen macht wie das Makro ^^

    @snn:

    Was muss ich denn da eintragen, damit das Makro gestartet wird?


Anmelden zum Antworten