Fragen zur Versionierung
-
Mittwoch, 15. Februar 2012 17:45
Hallo,
ich habe einige Fragen zur Versionierung von Programmen. In der Assembly-Information Dialogbox gibt es die Möglichkeit, die Assemblyversion und die Dateiversion des Projektes anzugeben. Ich habe mir die Hilfe von VB zu Rate gezogen, aber bin daraus nicht schlauer geworden. Außerdem wird dort aufgeführt, dass die o.g. Versionen nicht gleich sein müssen.
- Wann muss welche Version (Assembly, Datei) erhöht werden?
- Wann sind die jeweiligen Bestandteile der Versionsnummer (Hauptversion, Nebenversion, Buildnummer und Revision) zu ändern?
Zu Frage 2 habe ich ungefähre Vorstellungen, aber ich bin mir dennoch nicht sicher.
Gruss, LittleBlueBird
Alle Antworten
-
Donnerstag, 16. Februar 2012 19:14
Hallo,
Ich hoffe ich kann dir ein bisschen helfen.
Wenn ich ein Programm veröffentliche dann wird bei der Revision die Zahl automatisch erhöht denn dass ist die Zahl der veröffentlichungen.
Wenn eine neue Version erstellt wird macht man statt der 1 eine 2, aus der 2 ne 3 usw. (wie gesagt nach jeder neuen Version).
Bei den anderen hab ich auch keine Ahnung.
-
Freitag, 17. Februar 2012 16:46
Hallo Tolots,
danke für Deine Antwort. Das war auch meine Vermutung. Die Hauptversion würde ich mit meinem bescheidenen Wissen ändern, wenn das Programm grundlegend verändert wird. Ansonsten habe ich auch keine Ahnung. Ich überlege auch, ob ich mir Subversion installieren soll, damit die Versionskontrolle für mich verwaltet wird. Aber damit habe ich mich noch viel zu wenig beschäftigt und wahrscheinlich wird es mit der Express Version nicht funktionieren.
Ich habe aber gedacht, dass jetzt eine Fülle von Antworten kommen, denn dass sollte jedem Profiprogrammierer geläufig sein. Ich musste aber in letzter Zeit feststellen, dass dieses Forum immer seltener von fortgeschrittenen Programmierern bedient wird.
Gruss, LittleBlueBird
- Bearbeitet LittleBlueBird Freitag, 17. Februar 2012 16:51
-
Samstag, 18. Februar 2012 09:51
Ich musste aber in letzter Zeit feststellen, dass dieses Forum immer seltener von fortgeschrittenen Programmierern bedient wird.
Ach,
Hauptsache ist doch dass wir uns gegenseitig helfen können.
Der eine kann dass gut, der andere kann wieder etwas anderes gut.
Hat mich gefreut dir helfen zu können.
-
Samstag, 18. Februar 2012 10:04Beantworter
Hallo,
am "wichtigsten " aus .NET Sichth ist generell das AssemblyVersionAttribute,
denn das wird für die Identifizierung von Assemblies (mit starkem Namen) genutzt, siehe Assemblyversionen
Die sollte man dann ändern, wenn sich die enthaltenenen Typen so geändert haben,
dass sie mit älteren nicht mehr zusammenarbeiten würden - etwas was man i. a.
wiederum auf den anderen Seite vermeiden bzw. minimieren sollte.
.NET selbst kommt bekanntlich mit einer Handvoll aus, aktuell 4.0 (vorher 2.0).Um interne Änderungen erkennen zu können, eignet sich besser die AssemblyFileVersion -
die wird unter den Dateieigenschaften prominent angezeigt - oder auch die AssemblyInformationalVersion,
siehe dazu Festlegen von AssemblyattributenDie kann man ggf. automatisch beim Build in Build/Revision hochzählen lassen
Siehe dazu u. a. http://blogs.msdn.com/b/jjameson/archive/2009/04/03/best-practices-for-net-assembly-versioning.aspxEin Versionkontrollsystem wiederum hat mit der Assembly-Versionierung nichts zu tun
(auch wenn intern ähnliche Mechanismen verwendet).Ein Einsatz empfiehlt sich, denn nur so kann man auf ältere Stände zurückgreifen
und ggf. Probleme bei Anwendern nachvollziehen. Neben vielen anderen Gründen mehr,
stellvertretend: http://stackoverflow.com/questions/1408450/why-should-i-use-version-controlGruß Elmar
- Als Antwort markiert LittleBlueBird Samstag, 18. Februar 2012 13:41
-
Samstag, 18. Februar 2012 13:41
Hallo Elmar,
herzlichen Dank für Deine Erklärung und die Links. Nun verstehe ich die Versionierung viel besser. Da ich aber die Express-Version verwende, kann ich weder automatisch hochzählen lassen noch ein Versionskontrollsystem in VB integrieren. Ich habe zwar gelesen, dass man ein Versionskontrollsystem außerhalb von VB verwenden kann, aber es ist bei weitem nicht so komfortabel.
Gruss, LittleBlueBird
-
Samstag, 18. Februar 2012 14:02Beantworter
Hallo,
bei Express sind nunmal keine Addins erlaubt.
Aber die Versionsnummern brauchst Du eigentlich nur erhöhen, wenn Du das Programm auslieferst,
was vermutlich kaum stündlich passiert ;-)Anstatt sich durch die Dialoge durchzuklicken, kann man das direkt in der AssemblyInfo.vb erledigen.
(Und es gibt auch externe Skripts dafür, auch wenn Google mir gerade keins liefern möchte ;-)SVN kann man auch über den Windows Explorer bedienen - siehe z. B. Tortoise.
Das mag zwar nicht so komfortabel sein, wie Knöpfchen in Visual Studio drücken,
aber sollte für regelmässige Versionierung (z. B. täglich / nach Arbeitsende) reichen.
Und den Vorteil auf ältere Versionen zurückgreifen zu können, wird man bald nicht mehr missen wollen.
Gruß Elmar
- Bearbeitet Elmar BoyeMVP, Editor Samstag, 18. Februar 2012 14:05 Ergänzung
-
Samstag, 18. Februar 2012 17:26
Hallo Elmar,
Du hast Recht. Als Hobbyprogramierer werde ich hier und da ein Programm für Freunde, Familie oder mich erstellen. So oft wird es nicht vorkommen, dass ich die Versionsnummer erhöhen muss. Nichtsdestotrotz wollte ich verstehen, was ich da mache. Es ist nunmal meine Eigenart.
Der Hinweis mit der AssemblyInfo.vb ist sehr wertvoll. Da ich nun dank Deiner Unterstützung weiss, worauf ich bei der Versionserhöhung achten muss, benötige ich kein Skript. Im Übrigen hast Du mir mit diesem Hinweis eine weitere Frage beantwortet, die ich mir schon lange gestellt habe: Lokalisierung von Assemblyinformationen. Damit ist das auch geklärt. Besten Dank dafür.
Danke auch für den Verweis auf Tortoise. Ich hatte schon befürchtet, dass ich alles auf der Kommandozeile erledigen muss, wenn ich Subversion verwende. Ich bin nicht unbedingt ein Freund der Eingabeaufforderung, obgleich man damit durchaus einiges einfacher erledigen kann, wie z.B. Batch-Aufgaben. Jedenfalls gebe ich Dir Recht, dass es von Vorteil ist, wenn man auf ältere Versionen zurückgreifen kann. Ich hatte schon häufig genug Änderungen eingebaut, die letzendlich dann doch nichts gebracht haben, und musste dann auf den ursprüngliche Code zurückgreifen. Leider hatte ich manches versehentlich gelöscht, so dass ich einiges neu programmieren musste.
Gruss, LittleBlueBird

