Hoe kan ik synchroniseren het SVN revisie nummer met mijn ASP.NET web site?

stemmen
84

Stack overflow heeft een ondermijning versienummer op de bodem:

svn revisie: 679

Ik wil een dergelijke automatische versies gebruiken met mijn .NET Web Site/Application, Windows Forms, WPD projecten / oplossingen.

Hoe kan ik deze implementeren?

De vraag is gesteld op 01/08/2008 om 19:00
bron van user
In andere talen...                            


7 antwoorden

stemmen
24

U kunt dit doen door de volgende overal in uw code

$Id:$

Dus bijvoorbeeld @Jeff deed:

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

en wanneer gecontroleerd in de server vervangen $ Id: $ met de huidige revisie nummer. Ik ook vond deze referentie .

Er is ook $ Date: $ , $ Rev: $ , $ Revision: $

antwoordde op 01/08/2008 om 19:08
bron van user

stemmen
29

Het lijkt erop dat Jeff gebruikt CruiseControl.NET gebaseerd op een aantal bladeren in de podcast transcripten. Dit lijkt implementatiemogelijkheden van bron controle om de productie te hebben geautomatiseerd. Zou dit opgeeft waar het invoegen gebeurt?

antwoordde op 01/08/2008 om 19:24
bron van user

stemmen
9

$reven anderen als het zijn herzieningen voor de afzonderlijke bestanden, zodat ze niet veranderen, tenzij het bestand verandert. Het nummer op de webpagina wordt (waarschijnlijk, ik veronderstel hier) het SVN revisie nummer voor het hele project. Dat is anders dan het bestand herzieningen, die anderen zijn te wijzen op.

In dit geval Ik neem aan dat CCNET trekt het revisienummer van het project een deel van de webpagina met dat nummer herschrijven. Elke CI oplossing moet in staat zijn om dit te doen, dit in te stellen mijzelf met CCNET en TeamCity (hoewel niet webpagina's, maar automatische versioning van de inzet / montage-versies).

Om voor u om dit te doen, gebruik dan een CI oplossing die het ondersteunt, of gebruik je bouwproces (MSBuild / Nant) die versie op te slaan en schrijven naar de bestanden voordat "de implementatie van" het.

antwoordde op 13/08/2008 om 02:28
bron van user

stemmen
26

We doen dit met xUnit.net voor onze geautomatiseerde bouwt. We maken gebruik van CruiseControl.net(en proberen uit TeamCity). De MSBuild taak die we lopen voor continue integratie verandert automatisch het buildnummer voor ons, dus het resulterende build ZIP-bestand bevat een correct versioned set van DLL's en EXE.

Onze MSBuild bestand bevat een UsingTask verzoek om een DLL die reguliere vervangingen expressie doet: (bent u welkom om deze DLL te gaan gebruiken, want het is gedekt door de MS-PL-licentie ook)

  <UsingTask
     AssemblyFile = "3rdParty \ CodePlex.MSBuildTasks.dll"
     Taaknaam = "CodePlex.MSBuildTasks.RegexReplace" />

Vervolgens, we halen het buildnummer, die automatisch wordt verstrekt door de CI-systeem. U kunt natuurlijk ook uw bron controle provider om de bron revisie nummer geven als u wilt, maar we vonden het bouwen # in de CI-systeem was nuttig, omdat niet alleen de integratie resultaten kunnen zien door de CI build-nummer, dat ook voorziet in een koppelen terug naar de changeset (s) die werden opgenomen in de build.

 <! - Cascading pogingen om een ​​build-nummer te vinden ->

 <PropertyGroup Voorwaarde = "" $ (VersieNummer) == ''">
   <Buildnummer> $ (BUILD_NUMBER) </ VersieNummer>
 </ PropertyGroup>
 <PropertyGroup Voorwaarde = "" $ (VersieNummer) == ''">
   <Buildnummer> $ (ccnetlabel) </ VersieNummer>
 </ PropertyGroup>
 <PropertyGroup Voorwaarde = "" $ (VersieNummer) == ''">
   <Buildnummer> 0 </ VersieNummer>
 </ PropertyGroup>

(We proberen BUILD_NUMBER, die uit TeamCity, dan ccnetlabel, die komt uit CC.net, en als geen van beide aanwezig is, we standaard op 0, zodat we de geautomatiseerde build script handmatig testen.)

Vervolgens hebben we een taak die het buildnummer in een GlobalAssemblyInfo.cs bestand dat we verwijzen in al onze projecten sets:

 <Target Name = "SetVersionNumber">
   <REGEXREPLACE
       Patroon = 'AssemblyVersion \ ( "(\ d + \. \ D + \. \ + D) \. \ D +" \)'
       Vervanging = 'AssemblyVersion ( "$ 1. $ (VersieNummer)")'
       Files = 'GlobalAssemblyInfo.cs' />
   <Exec Command = "attrib -r xunit.installer \ App.manifest" />
 </ Target>

Dit vindt de AssemblyVersion attribuut, en vervangt de ABCD versienummer met abcBuildNumber. We zullen vertrekken meestal de bron gecontroleerd in de boom met de eerste drie delen van de vaste bouwer nummer, en de vierde op nul (fe, vandaag is het 1.0.2.0).

In je bouwproces, zorg ervoor dat de SetVersionNumber taak voorafgaat uw build taak. Aan het einde, gebruiken we onze Zip taak om zip-up de build resultaten, zodat we hebben een geschiedenis van de binaire bestanden voor elke geautomatiseerde build.

antwoordde op 16/08/2008 om 19:00
bron van user

stemmen
10

@Balloon Als u gebruik maakt TortoiseSVN, kunt u de verpakte gebruiken SubWCRev programma. Het vraagt een werkend exemplaar en vertelt je gewoon het hoogste revisie nummer. Toegegeven, lijkt dit een client-side benadering van een server-side probleem zijn, maar omdat het een mooie command line programma, moet u in staat om de uitgang voor gebruik vrij gemakkelijk vast te leggen.

antwoordde op 15/09/2008 om 20:04
bron van user

stemmen
5

Aan toe te voegen @ antwoord BradWilson's: "Je kunt natuurlijk ook uw bron controle provider om de bron revisie nummer bieden als je wilt"

: Om Subversion en MSBuild sluit MSBuild Community Taken Project

antwoordde op 01/10/2008 om 12:51
bron van user

stemmen
17

Als u gebruik maakt ASP.Net MVC(zoals StackOverflow doet), heb ik een schriftelijke eenvoudig te 3-stap handleiding over hoe om automatisch te krijgen en weer te geven de laatste SVN revisie volgen . De gids werd geïnspireerd door denken aan mezelf over deze vraag! :O)

antwoordde op 17/12/2008 om 11:17
bron van user

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