Der Stapelüberlauf hat unten eine Versionsnummer der Subversion:
SVN-Revision: 679
Ich möchte eine solche automatische Versionierung mit meinen .NET Web Site/Application
Windows Forms, WPD-Projekten / -Lösungen verwenden.
Wie implementiere ich das?
.net
asp.net
svn
versioning
Zack Peterson
quelle
quelle
Antworten:
Es sieht so aus, als würde Jeff CruiseControl.NET verwenden, basierend auf einigen Blättern in den Podcast-Transkripten. Dies scheint automatisierte Bereitstellungsfunktionen von der Quellcodeverwaltung bis zur Produktion zu haben. Könnte dies der Ort sein, an dem das Einfügen stattfindet?
quelle
Wir machen das mit xUnit.net für unsere automatisierten Builds. Wir verwenden
CruiseControl.net
(und probieren TeamCity aus). Die MSBuild-Task, die wir für die kontinuierliche Integration ausführen, ändert automatisch die Build-Nummer für uns, sodass die resultierende Build-ZIP-Datei einen ordnungsgemäß versionierten Satz von DLLs und EXEs enthält.Unsere MSBuild-Datei enthält eine UsingTask-Referenz für eine DLL, die reguläre Ausdrücke ersetzt: (Sie können diese DLL auch verwenden, da sie auch von der MS-PL-Lizenz abgedeckt wird.)
Als nächstes extrahieren wir die Build-Nummer, die vom CI-System automatisch bereitgestellt wird. Sie können Ihren Quellcodeverwaltungsanbieter auch bitten, die Versionsnummer der Quelle anzugeben, wenn Sie möchten. Wir haben jedoch festgestellt, dass die Build-Nummer im CI-System nützlicher ist, da nicht nur die Integrationsergebnisse anhand der CI-Build-Nummer angezeigt werden können, sondern auch eine Link zurück zu den Änderungssätzen, die im Build enthalten waren.
(Wir versuchen BUILD_NUMBER, das von TeamCity stammt, und dann ccnetlabel, das von CC.net stammt. Wenn keines von beiden vorhanden ist, setzen wir standardmäßig auf 0, damit wir das automatisierte Build-Skript manuell testen können.)
Als nächstes haben wir eine Aufgabe, die die Build-Nummer in eine GlobalAssemblyInfo.cs-Datei setzt, die wir in alle unsere Projekte verknüpfen:
Dadurch wird das AssemblyVersion-Attribut gefunden und die abcd-Versionsnummer durch abcBuildNumber ersetzt. Normalerweise lassen wir die Quelle im Baum eingecheckt, wobei die ersten drei Teile der Builder-Nummer festgelegt sind und der vierte Teil bei Null liegt (z. B. heute 1.0.2.0).
Stellen Sie in Ihrem Erstellungsprozess sicher, dass die Aufgabe SetVersionNumber Ihrer Erstellungsaufgabe vorausgeht. Am Ende verwenden wir unsere Zip-Aufgabe, um die Build-Ergebnisse zu komprimieren, sodass wir für jeden automatisierten Build einen Verlauf der Binärdateien haben.
quelle
Sie können dies tun, indem Sie an einer beliebigen Stelle in Ihrem Code Folgendes hinzufügen
So hat zum Beispiel @Jeff:
und beim Einchecken auf dem Server wurde $ Id: $ durch die aktuelle Versionsnummer ersetzt. Ich habe auch diese Referenz gefunden .
Es gibt auch $ Date: $ , $ Rev: $ , $ Revision: $
quelle
Wenn Sie
ASP.Net MVC
(wie StackOverflow) verwenden, habe ich eine einfach zu befolgende dreistufige Anleitung zum automatischen Abrufen und Anzeigen der neuesten SVN-Version geschrieben . Der Leitfaden wurde inspiriert, indem ich mir genau diese Frage überlegte! :Ö)quelle
@Balloon Wenn Sie TortoiseSVN verwenden, können Sie das gepackte SubWCRev- Programm verwenden. Es fragt eine Arbeitskopie ab und gibt nur die höchste Versionsnummer an. Zugegeben, dies scheint ein clientseitiger Ansatz für ein serverseitiges Problem zu sein, aber da es sich um ein nettes Befehlszeilenprogramm handelt, sollten Sie in der Lage sein, die Ausgabe für die Verwendung relativ einfach zu erfassen.
quelle
$rev
und andere, die es mögen, sind Revisionen für die einzelnen Dateien, sodass sie sich nur ändern, wenn sich die Datei ändert. Die Nummer auf der Webseite ist (wahrscheinlich nehme ich hier an) die SVN-Revisionsnummer für das gesamte Projekt. Das unterscheidet sich von den Dateirevisionen, auf die andere hingewiesen haben.In diesem Fall gehe ich davon aus, dass CCNET die Versionsnummer des Projekts abruft und einen Teil der Webseite mit dieser Nummer neu schreibt. Jede CI-Lösung sollte dazu in der Lage sein. Richten Sie dies selbst mit CCNET und Teamcity ein (obwohl keine Webseiten, sondern automatische Versionierung von Bereitstellungs- / Assemblyversionen).
Verwenden Sie dazu eine CI-Lösung, die dies unterstützt, oder verwenden Sie Ihren Erstellungsprozess (MSbuild / Nant), um diese Version zu speichern und in die Dateien zu schreiben, bevor Sie sie "bereitstellen".
quelle
Um die Antwort von @ BradWilson zu ergänzen: "Sie können auch Ihren Versionsverwaltungsanbieter bitten, die Versionsnummer der Quelle anzugeben, wenn Sie möchten."
So verbinden Sie Subversion und MSBuild: MSBuild Community Tasks Project
quelle