Wie synchronisiere ich die SVN-Revisionsnummer mit meiner ASP.NET-Website?

stimmen
84

Stack-Überlauf hat eine Subversion-Versionsnummer auf der Unterseite:

SVN-Revision: 679

Ich möchte mit meinem solche automatische Versionierung verwenden .NET Web Site/Application, Windows Forms, WPD Projekte / Lösungen.

Wie implementiere ich das?

Veröffentlicht am 01/08/2008 um 19:00
quelle vom benutzer
In anderen Sprachen...                            


7 antworten

stimmen
29

Sieht aus wie Jeff verwendet CruiseControl.NET basierend auf einige durch die Podcast - Transkripte blättert. Dies scheint Einsatzmöglichkeiten zur Produktion von Quellcodeverwaltung automatisiert zu haben. Könnte das sein , wo die Einfügung geschieht?

Beantwortet am 01/08/2008 um 19:24
quelle vom benutzer

stimmen
26

Wir tun dies mit xUnit.net für unseren automatisierten Builds. Wir verwenden CruiseControl.net(und versuchen , aus Teamcity). Die MSBuild Aufgabe , die wir für die kontinuierliche Integration laufen ändert automatisch die Build - Nummer für uns, so dass die resultierende Build ZIP - Datei enthält einen richtig versioniert Satz von DLLs und EXE - Dateien.

Unsere MSBuild - Datei enthält eine Usingtask Referenz für eine DLL , die reguläre Ausdrücke Ersatz tut: (Sie sind willkommen diese DLL zu verwenden, wie es auch von der MS-PL - Lizenz abgedeckt wird )

  <Usingtask
     Assembly = "3rdParty \ CodePlex.MSBuildTasks.dll"
     Taskname = "CodePlex.MSBuildTasks.RegexReplace" />

Als nächstes extrahieren wir die Versionsnummer, die durch das System automatisch CI vorgesehen ist. Sie können auch Ihre Source-Control-Provider, um die Quelle Revisionsnummer erhalten, wenn Sie wollen, aber wir fanden die Build # in dem CI-System mehr nützlich war, weil nicht nur die Integrationsergebnisse von der CI-Build-Nummer sehen können, die auch eine bietet eine Verknüpfung zu dem changeset zurück (s), die in den Aufbau einbezogen wurden.

 <! - Cascading versucht, eine Build-Nummer zu finden ->

 <Property Zustand = " '$ (Buildnumber)' == ''">
   <Buildnumber> $ (BUILD_NUMBER) </ Buildnumber>
 </ Propertygroup>
 <Property Zustand = " '$ (Buildnumber)' == ''">
   <Buildnumber> $ (ccnetlabel) </ Buildnumber>
 </ Propertygroup>
 <Property Zustand = " '$ (Buildnumber)' == ''">
   <Buildnumber> 0 </ Buildnumber>
 </ Propertygroup>

(Wir versuchen BUILD_NUMBER, die von Teamcity ist, dann ccnetlabel, die von CC.net ist, und wenn keiner vorhanden ist, fallen wir auf 0, so dass wir den automatisierten Build-Skript manuell testen.)

Als nächstes haben wir eine Aufgabe, die die Build-Nummer in eine GlobalAssemblyInfo.cs Datei setzt, die wir in allen unseren Projekten verlinken:

 <Target Name = "SetVersionNumber">
   <RegExReplace
       Pattern = 'Assembly \ ( "(\ d + \. \ D + \. \ D +) \. \ D +" \)'
       Ersatz = 'Assembly ( "$ 1. $ (Buildnumber)")'
       Dateien = 'GlobalAssemblyInfo.cs' />
   <Exec Command = "attrib -r xunit.installer \ app.manifest" />
 </ Target>

Diese finden Sie das Attribut Assemblyversion und ersetzt die ABCD-Versionsnummer mit abcBuildNumber. Wir werden in der Regel die Quelle verlassen in den Baum mit den ersten drei Teilen der Erbauer Nummer geprüft fixierte und die vierte auf Null (fe, heute ist es 1.0.2.0).

In Ihrem Build-Prozess, stellen Sie sicher, dass die SetVersionNumber Aufgabe Ihren Build-Task vorausgeht. Am Ende nutzen wir unsere Zip Aufgabe, die Build-Ergebnisse zippen, damit wir eine Geschichte der Binärdateien für jeden automatisierten Build haben.

Beantwortet am 16/08/2008 um 19:00
quelle vom benutzer

stimmen
24

Sie können es tun, indem Sie die folgenden überall in Ihrem Code hinzufügen

$Id:$

So zum Beispiel @ Jeff tat:

<div id="svnrevision">svn revision: $Id:$</div>

und wenn in dem Server ersetzt $ Id geprüft: $ mit der aktuellen Versionsnummer. Ich habe auch festgestellt diese Referenz .

Es gibt auch $ Date: $ , $ Rev: $ , $ Revision: $

Beantwortet am 01/08/2008 um 19:08
quelle vom benutzer

stimmen
17

Wenn Sie verwenden ASP.Net MVC(wie Stackoverflow tut), habe ich eine schriftliche einfache 3-Schritt - Anleitung zu folgen , wie automatisch zu erhalten und die aktuelle SVN - Revision angezeigt . Der Leitfaden wurde inspiriert von über diese Frage an mich denken! :O)

Beantwortet am 17/12/2008 um 11:17
quelle vom benutzer

stimmen
10

@Balloon Wenn Sie TortoiseSVN verwenden, können Sie das verpackte verwenden SubWCRev Programm. Es fragt eine Arbeitskopie und sagt Ihnen , nur die höchste Revisionsnummer. Zugegeben, dies scheint eine clientseitige Annäherung an ein serverseitiges Problem zu sein, aber da es ein schönes Kommandozeilen - Programm ist, sollten Sie seine Ausgabe für die Verwendung relativ leicht erfassen können.

Beantwortet am 15/09/2008 um 20:04
quelle vom benutzer

stimmen
9

$revund andere wie sie sind Revisionen für die einzelnen Dateien, so dass sie nicht, es sei denn die Datei ändert. Die Zahl auf der Webseite ist (wahrscheinlich, ich gehe davon aus hier), um die SVN-Revisionsnummer für das gesamte Projekt. Das ist anders als die Dateirevisionen, die andere haben bereits zeigen.

I In diesem Fall davon ausgehen, dass CCNET die Revisionsnummer des Projektes zieht und einen Teil der Webseite mit dieser Nummer neu zu schreiben. Jede CI-Lösung sollte in der Lage sein, dies zu tun, setzen Sie dies auf mich mit CCNET und Teamcity (wenn auch nicht Web-Seiten, aber die automatischen Versionierung von deployment / Montage-Versionen).

Damit Sie dies tun, eine CI-Lösung verwenden, die es unterstützt, oder verwenden Sie Ihren Build-Prozess (MSbuild / Nant) diese Version zu speichern und schreiben Sie es auf die Dateien vor dem „Bereitstellen“ es.

Beantwortet am 13/08/2008 um 02:28
quelle vom benutzer

stimmen
5

Hinzufügen zu @ BradWilson Antwort: „Sie auch Ihre Source - Control - Anbieter erhalten könnte die Quelle Revisionsnummer angeben , wenn Sie wollen“

Um eine Verbindung Subversion und MSBuild: Projekt MSBuild Community - Aufgaben

Beantwortet am 01/10/2008 um 12:51
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more