2010-03-09 5 views
5


Je crée une solution C# dans Visual Studio 2008 qui comporte plusieurs projets et dépendances de projet.
Je cherche un moyen de changer les numéros de version dll SEULEMENT lorsque le code qui construit le projet change.

J'utilise actuellement Beyond Compare pour comparer ma version construite localement au système de fichiers de production. Le but est de déployer UNIQUEMENT des DLL mises à jour. J'utilise des numéros de version auto-incrémentés, et chaque fois que vous ouvrez Visual Studio et que vous faites une build, tous les numéros de version dll s'incrémentent. Il en va de même pour une reconstruction complète de la solution et lorsqu'un développeur différent effectue une génération et essaie de déployer.

Existe-t-il un moyen de configurer Visual Studio pour incrémenter SEULEMENT le numéro de build en fonction du contenu du fichier modifié? Y a-t-il un ajout qui fera cela?

Il semble qu'une comparaison binaire de ces fichiers échoue également en raison des différents numéros de version dans les DLL. Est-ce que quelqu'un sait d'un meilleur outil comparer seulement le contenu des DLL?

Merci d'avance.Comment configurer les numéros de build dans Visual Studio pour activer la comparaison de DLL

Répondre

1

Une option consiste à passer à une solution d'intégration continue telle que Cruise Control .Net, ce qui permet de déclencher les générations lors de l'archivage dans un système de contrôle de source.

En ce qui concerne l'assemblage versioning ce que je fais habituellement est de créer un seul SolutionVersion.cs (pour remplacer la version d'assemblage par défaut cs) qui est lié à chaque projet (utilisez l'ajout d'élément existant, mais changer le bouton pour ajouter le lien)

Puis-je utiliser une tâche NAnt ou MSBuild de prendre le contrôle de croisière construire numéro d'étiquette et écraser les SolutionVersion.cs verison numéros avant que la solution est construite

de cette façon, je peux prendre un ensemble et remonter à code via Version de construction de CruiseControl (encore mieux, j'obtiens habituellement CC.net pour étiqueter la source avec le même numéro dans le contrôle de source)

+0

+1 pour ccnet. Pour les versions d'assemblage, nous utilisons le numéro de révision de subversion.Pour les installateurs, nous avons des projets ccnet qui nécessitent une génération de force, donc le programme d'installation est versionné en fonction du numéro de build ccnet. – Pedro

+0

Vous avez raison, avoir le serveur de construction faire c'est la meilleure option. le fichier de la version liée obtient la plupart du temps, mais CHAQUE version dll changerait avec chaque build si vous utilisez le numéro de build. l'utilisation du nombre de révolutions à partir du contrôle de la source semble plus compliquée à atteindre dans la plupart des scénarios, et plus de complexité pour utiliser le dernier nombre de révolutions de fichiers seulement dans un projet spécifique. – jaminto

+0

Je renonce à l'exigence du déploiement partiel des seules DLL mises à jour, le déploiement de toutes les DLL à partir d'une nouvelle version est très bien, et tous auront des numéros de version mis à jour en fonction du numéro de build. http://www.jetbrains.com/teamcity/ est mon serveur de construction de choix maintenant, peut être le vôtre aussi. – jaminto

0

Ce n'est pas tout à fait ce que vous demandez, mais j'ai trouvé cela utile dans le traitement de grandes solutions: Versioning Controlled Build. Selon son document, il détecte les modifications qui vous intéressent: "S'il existe un fichier avec un horodatage plus récent (ce qui signifie que le code source a été modifié après la modification de la version précédente), le projet sera marqué pour la mise à jour "

La solution recommandée et supportable serait que votre projet n'auto-incrémente pas automatiquement le numéro de build en utilisant le mode studio visuel. Ensuite, vous devrez manuellement, ou écrire un script de pré-construction/MS Build Task pour faire l'incrément.

0

Il y a un exemple intéressant dans ce codeproject article que vous devriez vérifier ... il implique une tâche prebuild qui fait la tâche de mettre à jour le numéro de version en fonction du jour de l'année

0

Je suggère que vous examinez les options que votre système de contrôle de révision fournit pour intégrer les informations de révision dans les fichiers source. J'ai eu assez de problèmes avec l'auto-incrément dans le passé que je me suis promis jamais plus. Ces jours-ci, je préfère quelque chose d'un peu plus concret qu'un numéro de build et j'insère des identifiants uniques dans chaque produit du système de construction. Je décris mon propre système au Embedding mercurial revision information in Visual Studio c# projects automatically. Bien que ma solution ne vous convienne probablement pas, il y avait d'autres options intéressantes suggérées en réponse à ma question, donc certaines des solutions que j'ai rejetées peuvent, néanmoins, vous être utiles, même si vous devez les adapter à tout VCS utilisation.

Questions connexes