Désactiver Adblock

AdBlock bloque du contenu sur le site

ADBlock errore

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

StackOverflow https://stackoverflow.com/questions/163
 Vérifié

Question

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

  

svn revision: 679

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

Comment puis-je implémenter cela?

Solution

On dirait que Jeff utilise CruiseControl.NET . basé sur certains feuilletant les transcriptions de 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?

Autres conseils

Nous le faisons avec xUnit.net pour nos versions automatisées. Nous utilisons CruiseControl.net (et essayons TeamCity). La tâche MSBuild que nous exécutons pour l'intégration continue modifie automatiquement le numéro de version pour nous, de sorte que le fichier ZIP de construction obtenu contient un ensemble de DLL et d'EXE correctement versionné.

Notre fichier MSBuild . contient une référence UsingTask pour une DLL effectuant des remplacements d'expressions régulières: (vous pouvez utiliser cette DLL car elle est également couverte par la licence MS-PL)

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

Ensuite, nous extrayons le numéro de build, qui est fourni automatiquement par le système CI. Vous pouvez également demander à votre fournisseur de contrôle source de fournir le numéro de révision source si vous le souhaitez, mais nous avons constaté que le numéro de construction dans le système CI était plus utile, car non seulement les résultats de l'intégration pouvaient être visualisés par le numéro de version de CI, mais également une créer un lien vers les ensembles de modifications inclus dans la construction.

 <!-- Cascading attempts to find a build number -->

 <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 provient de TeamCity, puis ccnetlabel, qui provient de CC.net, et si aucun n’est présent, nous réglons par défaut sur 0 afin de pouvoir tester le script de construction automatique manuellement.)

Nous avons ensuite une tâche qui définit le numéro de construction dans un fichier GlobalAssemblyInfo.cs que nous lions dans tous nos projets:

 <Target Name="SetVersionNumber">
   <RegexReplace
       Pattern='AssemblyVersion\("(\d+\.\d+\.\d+)\.\d+"\)'
       Replacement='AssemblyVersion("$1.$(BuildNumber)")'
       Files='GlobalAssemblyInfo.cs'/>
   <Exec Command="attrib -r xunit.installer\App.manifest"/>
 </Target>

Ceci trouve l'attribut AssemblyVersion et remplace le numéro de version a.b.c.d par a.b.c.BuildNumber. Nous laisserons généralement la source cochée dans l’arborescence avec les trois premières parties du numéro de constructeur corrigées et la quatrième à zéro (par exemple, elle est aujourd’hui 1.0.2.0).

Dans votre processus de construction, assurez-vous que la tâche SetVersionNumber précède votre tâche de construction. À la fin, nous utilisons notre tâche Zip pour compresser les résultats de la compilation afin de disposer d’un historique des fichiers binaires pour chaque génération automatisée.

Vous pouvez le faire en ajoutant les éléments suivants n'importe où dans votre code

$Id:$

Ainsi, par exemple, @Jeff a:

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

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

Il existe également $ Date: $ , $ Rev: $ , $ Révision: $

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

@Balloon Si vous utilisez TortoiseSVN, vous pouvez utiliser le programme SubWCRev . 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.

$rev et d'autres de ce type sont des révisions pour des fichiers individuels, elles ne seront donc pas modifiées à moins que le fichier ne soit modifié. Le numéro sur la page Web est (très probablement, je suppose ici) le numéro de révision svn pour l'ensemble du projet. C’est différent des révisions de fichiers que d’autres ont déjà signalées.

Dans ce cas, je suppose que CCNET extrait le numéro de révision du projet et réécrit une partie de la page Web avec ce numéro. Toutes les solutions CI doivent pouvoir le faire. Configurez-le moi-même avec CCNET et Teamcity (bien qu’il ne s’agisse pas de pages Web, mais de versions automatiques des versions de déploiement / assemblage).

Pour ce faire, utilisez une solution CI qui la prend en charge ou utilisez votre processus de construction (MSbuild / Nant) pour stocker cette version et l'écrire dans les fichiers avant le & déploiement du & " ; il.

Pour ajouter à la réponse de @ BradWilson: & "; Vous pouvez également demander à votre fournisseur de contrôle de source de fournir le numéro de révision de la source si vous souhaitez &";

.

Pour connecter Subversion et MSBuild: Projet de tâches de la communauté MSBuild

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow