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...
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?