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

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

svn revision: 679

Je souhaite utiliser un tel contrôle de version automatique avec mon .NET Web Site/Application mes projets / solutions Windows Forms et WPD.

Comment puis-je implémenter cela?

On dirait que Jeff utilise CruiseControl.NET en se basant sur des feuillets dans les transcriptions des podcasts. 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 se produit?

Nous faisons cela avec xUnit.net pour nos builds automatisés. Nous utilisons CruiseControl.net (et essayons TeamCity). La tâche MSBuild que nous exécutons pour une continuous integration modifie automatiquement le numéro de compilation pour nous, de sorte que le fichier ZIP de génération résultant contient un ensemble de DLL et d’EXE correctement versionnées.

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

   

Ensuite, nous extrayons le numéro de build, fourni automatiquement par le système CI. Si vous le souhaitez, vous pouvez également demander à votre fournisseur de contrôle de code source de fournir le numéro de révision source, mais nous avons constaté que le numéro de build du système de CI était plus utile, car lien vers les modifications qui ont été incluses dans la construction.

  

  
     $ (BUILD_NUMBER) 
  
  
     $ (ccnetlabel) 
  
  
     0 
  

(Nous essayons BUILD_NUMBER, qui provient de TeamCity, puis ccnetlabel, qui provient de CC.net, et si aucun n’est présent, nous sums par défaut à 0, afin que nous puissions tester le script de génération automatisé manuellement.)

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

  
    
    
  

Cela permet de trouver l’atsortingbut AssemblyVersion et de remplacer le numéro de version abcd par abcBuildNumber. Nous allons généralement laisser la source dans l’arborescence avec les trois premières parties du numéro de générateur fixe, et la quasortingème à zéro (par exemple, aujourd’hui, c’est 1.0.2.0).

Dans votre processus de génération, assurez-vous que la tâche SetVersionNumber précède votre tâche de génération. À la fin, nous utilisons notre tâche Zip pour compresser les résultats de la construction afin que nous ayons un historique des fichiers binarys 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 fait:

 
svn revision: $Id:$

et quand coché dans le serveur a remplacé $ Id: $ avec le numéro de révision actuel. J’ai aussi trouvé cette référence .

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

Si vous utilisez ASP.Net MVC (comme le fait StackOverflow), j’ai écrit un guide en trois étapes facile à suivre sur la façon d’obtenir et d’afficher automatiquement la dernière révision SVN . Le guide a été inspiré en pensant à moi-même à propos de cette question! : o)

@Balloon Si vous utilisez TortoiseSVN, vous pouvez utiliser le programme SubWCRev intégré . 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 il s’agit d’un bon programme en ligne de commande, vous devriez être capable de capturer assez facilement ses résultats.

$rev et d’autres $rev similaires sont des révisions pour les fichiers individuels, elles ne changeront donc que si le fichier change. Le numéro sur la page Web est (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 pointées.

Dans ce cas, je suppose que CCNET tire le numéro de révision du projet et réécrit une partie de la page Web avec ce numéro. Toute solution de CI devrait être capable de le faire, définissez-la moi-même avec CCNET et Teamcity (mais pas les pages Web, mais la gestion automatique des versions de déploiement / assemblage).

Pour ce faire, utilisez une solution CI qui le prend en charge ou utilisez votre processus de génération (MSbuild / Nant) pour stocker cette version et l’écrire dans les fichiers avant de la “déployer”.

Pour append à la réponse de @ BradWilson: “Vous pouvez également demander à votre fournisseur de contrôle de code source de fournir le numéro de révision source si vous le souhaitez”

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