101 votes

Comment synchroniser le numéro de révision SVN avec mon site Web ASP.NET?

Stack Overflow a un numéro de version de subversion en bas:

svn révision: 679

Je souhaite utiliser ce type de gestion de version automatique avec mon site Web / Application .NET, Windows Forms, projets / solutions WPD.

Comment puis-je mettre en œuvre cela?

32voto

saint_groceon Points 2696

On dirait que Jeff utilise CruiseControl.NET d' après certains relevés de transcription du podcast. Cela semble avoir des capacités de déploiement automatisées du contrôle de source à la production. Est-ce que c'est là que l'insertion a lieu?

28voto

Brad Wilson Points 22910

Nous le faisons avec xUnit.net pour nos générations automatisées. Nous utilisons CruiseControl.net (et essayer TeamCity). La tâche MSBuild que nous avons pour l'intégration continue change automatiquement le numéro de build pour nous, de sorte que le montant de construire le fichier ZIP contient un correctement versionnées ensemble de Dll et Exe.

Notre MSBuild fichier contient un UsingTask de référence pour une DLL qui ne des expressions régulières de remplacement: (vous êtes les bienvenus pour utiliser cette DLL, comme il est couvert par la MS-PL licence)

<UsingTask
AssemblyFile="3rdParty\CodePlex.MSBuildTasks.dll"
Nom_tâche="CodePlex.MSBuildTasks.RegexReplace"/>

Ensuite, nous avons extrait le numéro de build, qui est fourni automatiquement par le système CI. Vous pouvez aussi obtenir votre source de contrôle du fournisseur de fournir la source numéro de révision si vous le souhaitez, mais nous avons trouvé le build # dans le système CI était plus utile, parce que non seulement pouvez voir les résultats de l'intégration par le CI le numéro de build, qui fournit également un lien vers l'ensemble de modifications(s) qui ont été inclus dans la construction.

 <!-- En cascade, essaye de trouver un numéro de build -->

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

(Nous essayons BUILD_NUMBER, qui est de TeamCity, puis ccnetlabel, qui est de CC.net et si aucune n'est présente, nous avons par défaut à 0, de sorte que nous pouvons tester la version automatique de script manuellement.)

Ensuite, nous avons une tâche qui définit le numéro de build dans un GlobalAssemblyInfo.cs fichier que nous lien dans tous nos projets:

 <Target Name="SetVersionNumber">
<RegexReplace
Pattern='AssemblyVersion\("(\d+\.\d+\.\d+)\.\d+"\)'
Remplacement='AssemblyVersion("$1.$(BuildNumber)")'
Fichiers='GlobalAssemblyInfo.cs'/>
 <Commande Exec="attrib -r xunit.installer\App.manifeste"/>
</Target>

Cette découverte le AssemblyVersion attribut, et remplace le un.b.c.d numéro de version avec un.b.c.BuildNumber. Nous avons l'habitude de laisser la source vérifiée dans l'arbre, avec les trois premières parties du générateur de nombre fixe, et la quatrième à zéro (f.e., aujourd'hui, c'est 1.0.2.0).

Dans votre processus de création, assurez-vous que le SetVersionNumber tâche précède votre tâche de génération. À la fin, nous utilisons notre Zip tâche à zip up les résultats de la compilation, de sorte que nous avons une histoire des binaires pour chaque génération automatisée.

25voto

Nick Berardi Points 31361

Vous pouvez le faire en ajoutant ce qui suit n'importe où dans votre code

  $Id:$ 

Ainsi, par exemple, Jeff a:

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

et lorsque coché, le serveur remplace $ Id: $ par le numéro de révision actuel. J'ai aussi trouvé cette référence .

Il y a aussi $ Date: $ , $ Rev: $ , $ Révision: $

17voto

Andrew Points 4523

Si vous utilisez ASP.Net MVC (comme StackOverflow), j'ai rédigé un guide en trois étapes, facile à suivre, sur la manière d'obtenir et d'afficher automatiquement la dernière révision SVN . Le guide a été inspiré en réfléchissant à cette question même! : o)

10voto

nickf Points 185423

@ Balloon Si vous utilisez TortoiseSVN, vous pouvez utiliser le programme SubWCRev fourni . Il interroge une copie de travail et vous indique uniquement le numéro de révision le plus élevé. Certes, cela semble être une approche côté client d'un problème côté serveur, mais comme c'est un bon programme en ligne de commande, vous devriez pouvoir capturer sa sortie pour l'utiliser assez facilement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X