Hvordan kan jeg synkronisere SVN revisjonsnummeret med min ASP.NET nettsted?

stemmer
87

Stack Overflow har en omveltning versjonsnummer nederst:

svn revisjon: 679

Jeg ønsker å bruke slike automatiske versjons med mine .NET Web Site/Application, Windows Forms, WPD prosjekter / løsninger.

Hvordan implementerer jeg dette?

Publisert på 01/08/2008 klokken 18:00
kilden bruker
På andre språk...                            


7 svar

stemmer
30

Ser ut som Jeff bruker CruiseControl.NET basert på noen bla gjennom podcast transkripsjoner. Dette synes å ha automatisert distribusjon evner fra kildekontroll til produksjon. Kan dette være der innsetting skjer?

Svarte 01/08/2008 kl. 18:24
kilden bruker

stemmer
26

Vi gjør dette med xUnit.net for våre automatiserte bygger. Vi bruker CruiseControl.net(og prøver ut TeamCity). Den MSBuild oppgave som vi kjører for kontinuerlig integrasjon endrer automatisk versjonsnummeret for oss, så den resulterende bygge ZIP-filen inneholder en ordentlig versjonert sett av DLL-filer og EXEs.

Vår MSBuild filen inneholder en UsingTask referanse for en DLL som gjør regulære uttrykk erstatninger: (du er velkommen til å bruke denne DLL, som det er dekket av MS-PL-lisens i tillegg)

  <UsingTask
     AssemblyFile = "3rdparty \ CodePlex.MSBuildTasks.dll"
     TaskName = "CodePlex.MSBuildTasks.RegexReplace" />

Deretter trekke vi build-nummeret, som leveres automatisk av CI-systemet. Du kan også få din kilde kontroll leverandøren for å gi kilden revisjonsnummeret hvis du vil, men vi fant bygge # i CI-systemet var mer nyttig, fordi ikke bare kan se integrasjons resultatene av CI build-nummeret, som også gir en lenke tilbake til forandrings (er) som ble inkludert i bygge.

 <! - Cascading forsøker å finne en build nummer ->

 <PropertyGroup tilstand = " '$ (BuildNumber)' == ''">
   <BuildNumber> $ (BUILD_NUMBER) </ BuildNumber>
 </ PropertyGroup>
 <PropertyGroup tilstand = " '$ (BuildNumber)' == ''">
   <BuildNumber> $ (ccnetlabel) </ BuildNumber>
 </ PropertyGroup>
 <PropertyGroup tilstand = " '$ (BuildNumber)' == ''">
   <BuildNumber> 0 </ BuildNumber>
 </ PropertyGroup>

(Vi prøver BUILD_NUMBER, som er fra TeamCity, så ccnetlabel, som er fra CC.net, og hvis ingen er til stede, vi standard til 0, slik at vi kan teste den automatiserte bygge skriptet manuelt.)

Deretter har vi en oppgave som setter build-nummeret til en GlobalAssemblyInfo.cs fil som vi lenker til alle våre prosjekter:

 <Target Name = "SetVersionNumber">
   <REGEXREPLACE
       Mønster = 'AssemblyVersion \ ( "(\ d + \. \ D + \. \ D +) \. \ D +" \)'
       Utskifting = 'AssemblyVersion ( "$ 1. $ (BuildNumber)")'
       Filer = 'GlobalAssemblyInfo.cs' />
   <Exec Command = "attrib -r xunit.installer \ App.manifest" />
 </ Target>

Dette finner AssemblyVersion attributt, og erstatter abcd versjonsnummeret med abcBuildNumber. Vi vil vanligvis forlater kilden sjekket inn i treet med de tre første delene av byggherren antall fast, og den fjerde på null (fe, i dag er det 1.0.2.0).

I byggeprosessen, sørg for at SetVersionNumber oppgave foran bygge din oppgave. På slutten, bruker vi vår Zip oppgave å zippe de bygge resultatene, slik at vi har en historie av binærfiler for hver automatisert bygge.

Svarte 16/08/2008 kl. 18:00
kilden bruker

stemmer
25

Du kan gjøre det ved å legge til følgende hvor som helst i koden din

$Id:$

Så for eksempel @Jeff gjorde:

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

og når sjekket inn serveren erstattet $ Id: $ med gjeldende revisjonsnummer. Jeg har også funnet denne referansen .

Det er også $ Dato: $ , $ Rev: $ , $ Revision: $

Svarte 01/08/2008 kl. 18:08
kilden bruker

stemmer
17

Hvis du bruker ASP.Net MVC(som Stackoverflow gjør), har jeg skrevet en enkel å følge tre-steg guide til hvordan du automatisk få og vise den siste SVN revisjon . Guiden ble inspirert av å tenke for meg selv om dette spørsmålet! : o)

Svarte 17/12/2008 kl. 10:17
kilden bruker

stemmer
10

@Balloon Hvis du bruker TortoiseSVN, kan du bruke den pakkede SubWCRev programmet. Det spør en arbeidskopi og forteller deg akkurat det høyeste revisjonsnummeret. Riktignok synes dette å være en klient-side tilnærming til en server-side problem, men siden det er en fin kommandolinje program, bør du være i stand til å fange opp sin produksjon til bruk ganske enkelt.

Svarte 15/09/2008 kl. 19:04
kilden bruker

stemmer
9

$revog andre liker det er endringer for de enkelte filer, slik at de ikke vil endre med mindre filendringer. Tallet på nettsiden er (mest sannsynlig, jeg antar her) svn revisjonsnummeret for hele prosjektet. Som er annerledes enn de filrevisjoner, som andre har vært peker til.

I dette tilfellet antar jeg at CCNET trekker revisjonsnummeret av prosjektet og skrive en del av websiden med det nummeret. Enhver CI løsning bør være i stand til å gjøre dette, sette dette opp meg selv med CCNET og Teamcity (men ikke websider, men automatisk versjonskontroll av utplassering / montering versjoner).

For at du skal gjøre dette, bruker en CI løsning som støtter det, eller bruke byggeprosessen (MSBuild / Nant) til å lagre denne versjonen og skrive det til filene før "distribusjon" den.

Svarte 13/08/2008 kl. 01:28
kilden bruker

stemmer
5

For å legge til @ BradWilson svar: "Du kan også få din kildekontroll leverandøren for å gi kilden revisjonsnummeret hvis du vil"

For å koble Subversion og MSBuild: MSBuild fellesskaps Oppgaver Prosjekt

Svarte 01/10/2008 kl. 11:51
kilden bruker

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