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

Translate

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

révision svn: 679

Je souhaite utiliser ce contrôle de version automatique avec mon.NET Web Site/Application, Windows Forms, projets / solutions WPD.

Comment mettre en œuvre cela?

This question and all comments follow the "Attribution Required."

Toutes les réponses

Translate

On dirait que Jeff utiliseCruiseControl.NETbasé sur certains feuilletant les transcriptions du podcast. Cela semble avoir des capacités de déploiement automatisées, du contrôle de source à la production. Serait-ce là où l'insertion a lieu?

La source
Translate

Nous faisons cela avecxUnit.netpour nos builds automatisés. Nous utilisonsCruiseControl.net(et essayent 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 résultant contient un ensemble correctement versionné de DLL et EXE.

NotreFichier MSBuildcontient une référence UsingTask pour une DLL qui effectue 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 de code source de fournir le numéro de révision source si vous le souhaitez, mais nous avons trouvé que le numéro de version dans le système CI était plus utile, car non seulement peut voir les résultats de l'intégration par le numéro de version CI, mais cela fournit également un lien vers les ensembles de modifications qui ont été 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 vient de TeamCity, puis ccnetlabel, qui provient de CC.net, et si aucun n'est présent, nous par défaut à 0, afin de pouvoir tester le script de construction 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:

 <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>

Cela trouve l'attribut AssemblyVersion et remplace le numéro de version abcd par abcBuildNumber. Nous laisserons généralement la source archivée dans l'arborescence avec les trois premières parties du numéro de constructeur fixées, et la quatrième à zéro (fe, 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 compilation afin d'avoir un historique des binaires pour chaque compilation automatisée.

La source
Translate

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

$Id:$

Par exemple, @Jeff a fait:

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

et lors de l'enregistrement, le serveur a remplacé $ Id: $ par le numéro de révision actuel. moi aussitrouvé cette référence.

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

La source
Translate

Si vous utilisezASP.Net MVC(comme le fait StackOverflow), j'ai écrit unGuide facile à suivre en 3 étapes sur la façon d'obtenir et d'afficher automatiquement la dernière révision SVN. Le guide s'est inspiré en pensant à moi-même à cette question même! : o)

La source
Translate

@Balloon Si vous utilisez TortoiseSVN, vous pouvez utiliser le packageSubWCRevprogramme. 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 pour un problème côté serveur, mais comme c'est un bon programme en ligne de commande, vous devriez être en mesure de capturer sa sortie pour une utilisation assez facilement.

La source
Translate

$revet d'autres comme ça sont des révisions pour les fichiers individuels, donc ils ne changeront pas à moins que le fichier change. 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, auxquelles d'autres ont fait référence.

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. Toute solution CI devrait pouvoir le faire, configurer cela moi-même avec CCNET et Teamcity (mais pas des pages Web, mais une gestion automatique des versions des versions de déploiement / d'assemblage).

Pour ce faire, utilisez une solution CI qui la 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».

La source
jan
Translate

Pour ajouter à 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

La source