none
Automatisches Hochzählen der Projekt-Versionsnummer (Build und Revision) funktioniert nicht mehr

    Frage


  • Hallo zusammen,

    hier erstmal meine Konfiguration:
    - Betriebssystem: Windows XP Professional - Service Pack 3
    - IDE: Visual Studio Professional 2005
    - Projekt-Type: VB.NET
    - Framework: .NET-Framework 2.0

    Beim Erstellen eines neuen VB.NET-Projekts in VS2005, wird autom. das File "AssemblyInfo.vb" miterzeugt. Dieses File weißt auf ein Feature in VS hin, welches erlaubt die Versionsnummer des Projekts autom. zu erhöhen.
    Das heißt konkret, bei jeder Änderung im Quelltext und anschließender Kompilierung des Projektes wird die Build- und Revisionsnummer autom. mit hochgezählt.

    Im Folgenden der Auszug aus der AssemblyInfo:

    ' Sie können alle Werte angeben oder die standardmäßigen
    ' Build- und Revisionsnummern übernehmen, indem Sie "*" eingeben: ' <Assembly: AssemblyVersion("1.0.*")> <Assembly: AssemblyVersion("1.0.*")>



    Leider funktioniert das autom. Weiterzählen der Versionsnummer nicht mehr wie bisher.

    Gibt's hierfür eine Lösung, z.B. Löschen von Cached-Files oder ähnliches,
    um das Feature wieder zum Laufen zu bringen?

    Gruß,
    Marco



    • Bearbeitet ServicoWUG Freitag, 10. Mai 2013 11:34
    Freitag, 10. Mai 2013 10:33

Alle Antworten

  • <Assembly: AssemblyVersion("1.0.*")>

    Wie kommst Du darauf, dass hier was automatisch "hochgezählt" wird?

    Das "1.0.*" bedeutet nur, dass die folgenden Stellen aus dem aktuellen Datum/Uhrzeit erzeugt werden...
    Forlaufend war diese Nummer noch nie...


    Jochen Kalmbach (MVP VC++)
    Freitag, 10. Mai 2013 11:00
  • <Assembly: AssemblyVersion("1.0.*")>

    Wie kommst Du darauf, dass hier was automatisch "hochgezählt" wird?

    Das "1.0.*" bedeutet nur, dass die folgenden Stellen aus dem aktuellen Datum/Uhrzeit erzeugt werden...
    Forlaufend war diese Nummer noch nie...


    Jochen Kalmbach (MVP VC++)

    Gut, wenn die Werte aus dem Datum und Uhrzeit erzeugt werden, dann ist "hochzählen" wohl das falsche Wort. Meinte damit lediglich, dass die Versionnummer erhöht wird.
    Solange nicht um -1 erhöht wird, ist das eigentl. kein Problem ;)

    Jedefalls funktioniert genau das nicht mehr...
    • Bearbeitet ServicoWUG Freitag, 10. Mai 2013 11:16
    Freitag, 10. Mai 2013 11:16
  • Welche Version steht denn dann drin?


    Jochen Kalmbach (MVP VC++)
    Freitag, 10. Mai 2013 11:47
  • Die Executable bekommt die Versionsnummer
    1.0.4875.26529

    Auch nach vielen Änderungen am Code und Bereinigen der Projektmappe,
    die Versionsnummer bleibt bei Folgender 1.0.4875.26529

    noch eine Ergänzung: Das Ändern der Versionsnummer ist für die interne Update-Logik notwendig, damit diese feststellen kann, ob ein Update zur Verfügung steht, und wie viele und welche Files der Anwendung ge-updatet werden müssen.

    Gruss

    Freitag, 10. Mai 2013 12:01
  • Hast Du die Datei schon mal gelöscht und dann einen Rebuild gemacht?


    Jochen Kalmbach (MVP VC++)
    Freitag, 10. Mai 2013 15:45
  • Ja, habe bereits mal alle Files im Ausgabeordner gelöscht und auch mal das Projekt bereinigt und neu erstellt, hat aber alles nicht gebracht.
    Die Versionsnummer bleibt gleich.

    Montag, 13. Mai 2013 07:51
  • Kannst Du ein ganz kleines Beispielprogram mmachen, wo dies auftritt?

    WO schaust Du denn nach???

    Die Versions-Nummer die da erzeugt wird sind man nur in den Assembly-Meta-Daten!!! ALso via ildasm oder dotPeek!


    Jochen Kalmbach (MVP VC++)
    Montag, 13. Mai 2013 08:08
  • Kannst Du ein ganz kleines Beispielprogram mmachen, wo dies auftritt?

    Das Problem tritt bereits beim Erstellen eines neuen Projektes auf.
    Also in VS2005 auf  [Datei]  -->  [Neu]  -->  [Visual Basic]  -->  [Windows-Anwendung]  -->  Namen eintippen  -->  [OK]

    Anschließend im Projektmappen-Explorer die "AssemblyInfo.vb" suchen und darin folgende Zeile

    <Assembly: AssemblyVersion("1.0.0.0")>

    abändern in

    <Assembly: AssemblyVersion("1.0.*")> 

    Zum Schluss das ganze Projekt kompilieren/starten. Die nun vergebene Versionsnummer ändert sich ab da nicht mehr.
    Bei jeder Änderung im Code und anschließender Kompilierung sollte eigentl. eine Neue zugewiesen werden. Funzt aber nicht.

    WO schaust Du denn nach???

    Die Versions-Nummer die da erzeugt wird sind man nur in den Assembly-Meta-Daten!!! ALso via ildasm oder dotPeek!

    Die Versionsnummer kann man sich als String zurückgeben lassen. Das geht mit folgendem Code:

    Application.ProductVersion

    Oder - ganz simpel - aber über den Win-Explorer --> Rechtsklick auf die Executable  -->  [Eigenschaften]  -->  auf den Tab [Version] klicken. Hier findet man ebenfalls die besagten Versionsnummern (Assembly Version / Dateiversion / ProduktVersion).







    • Bearbeitet ServicoWUG Montag, 13. Mai 2013 08:37
    Montag, 13. Mai 2013 08:36
  • Das "Application.ProductVersion ist nicht die Nummer, die Du suchst.

    Hier mal ein Beispiel:

    Label1.Text = Application.ProductVersion  'Liefert das falsche
    Label2.Text = System.Reflection.Assembly.GetEntryAssembly().GetName().Version.ToString()  'Liefert die AssemblyVersion

    Es scheint aber so zu sein, dass sich die Version nicht ändert, so lange man VS offen hat.
    Schliesst man VS und macht es wieder auf und macht dann ein Rebuild, dann ändert sich die AssemblyVersion!
    Jochen Kalmbach (MVP VC++)
    Montag, 13. Mai 2013 09:26
  • Auf meinem PC ist die Versionsnummer, welche beide Code-Zeilen zurückgeben, die Gleiche. Keine Unterschied bei den beiden Nummern.

    Desweiteren habe ich das Gleiche mal C# probiert (Neues C#-Projekt + AssemblyInfo.cs umgestellt).
    In C# ändert sich die Versionsnummer wirklich jedes mal, wenn ich eine Code-Änderung durchführe und anschließend Neu kompiliere.
    Die Versionsnummer ändert sich immer!?!?



    • Bearbeitet ServicoWUG Montag, 13. Mai 2013 10:32 Tippfehler
    Montag, 13. Mai 2013 10:31
  • Kann ich bei mir nicht nachvollziehen... erzeuge doch mal ein ganz kleines Beispielprojekt und sende dies mir..... oder lege es irgendwo zum Download hin...


    Jochen Kalmbach (MVP VC++)
    Montag, 13. Mai 2013 11:03
  • Hier ein Link zu zwei Projekten, mit denen die Problemtik besser nachvollzogen werden kann.
    Es werden die Versionsnummern angezeigt, sowohl
    die Application.ProductVersion als auch die AssemblyVersion.
    Quellcode + Kompilat liegen bei

    https://skydrive.live.com/redir?resid=B8CE5716D59E3F8B!109&authkey=!ALKUe0vUtBmfpC0

    Montag, 13. Mai 2013 11:49
  • Ist das noch VS2005??? Hab ich leider nicht....
    Mit VS2008/2010/2012 lässt sich Dein Problem hier nicht navchvollziehen... dort wird nach VS-Neustart immer eine neue Versionsnummer erzeugt...


    Jochen Kalmbach (MVP VC++)
    Montag, 13. Mai 2013 12:44
  • bei C# bekomme ich nach _jeder_ Änderung und Rebuild eine neue Versionsnummer, bei VB.NET definitiv nicht...
    kann das aber noch in VS2010 austesten.


    • Bearbeitet ServicoWUG Montag, 13. Mai 2013 13:01
    Montag, 13. Mai 2013 13:01
  • OK, auch in VS2010 ist dies der Fall.
    Damit man eine neue Versionsnummer erhält,
    ist für VB.NET ein Neustart von VS nötig,
    bei C# allerdings nicht.)

    Montag, 13. Mai 2013 13:12