Stack Overflow a un numéro de version de subversion en bas:
révision svn: 679
Je souhaite utiliser un tel contrôle de version automatique avec mes .NET Web Site/Application
projets / solutions Windows Forms, WPD.
Comment mettre en œuvre cela?
Stack Overflow a un numéro de version de subversion en bas:
révision svn: 679
Je souhaite utiliser un tel contrôle de version automatique avec mes .NET Web Site/Application
projets / solutions Windows Forms, WPD.
Comment mettre en œuvre cela?
Réponses:
On dirait que Jeff utilise CruiseControl.NET sur la base de quelques feuillets dans les transcriptions de 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?
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 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.
Notre fichier MSBuild contient une référence UsingTask pour une DLL qui remplace les expressions régulières: (vous êtes invité à utiliser cette DLL, car elle est également couverte par la licence MS-PL)
<Utilisation de la tâche 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, qui fournit également un lien vers les ensembles de modifications qui ont été inclus dans la construction.
<! - Tentatives en cascade pour 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 provient de TeamCity, puis ccnetlabel, qui provient de CC.net, et si aucun des deux n'est présent, nous avons par défaut la valeur 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:
<Nom de la cible = "SetVersionNumber"> <RegexReplace Pattern = 'AssemblyVersion \ ("(\ d + \. \ D + \. \ D +) \. \ D +" \)' Remplacement = '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 (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 compilation afin d'avoir un historique des binaires pour chaque compilation automatisée.
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. J'ai également 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 3 é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 à cette question même! : o)
@Balloon Si vous utilisez TortoiseSVN, vous pouvez utiliser le programme intégré SubWCRev . Il interroge une copie de travail et ne vous indique que 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.
$rev
et 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 allusion.
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».
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: MSBuild Community Tasks Project