Je me demandais simplement comment je pouvais incrémenter automatiquement la génération (et la version?) De mes fichiers à l'aide de Visual Studio (2005).
Si je recherche les propriétés de dis C:\Windows\notepad.exe
, l'onglet Version donne "Version du fichier: 5.1.2600.2180". Je voudrais obtenir ces chiffres sympas dans la version de mes DLL aussi, pas dans la version 1.0.0.0, qui avouons que c'est un peu terne.
J'ai essayé quelques choses, mais cela ne semble pas être une fonctionnalité prête à l'emploi, ou peut-être que je regarde juste au mauvais endroit (comme d'habitude).
Je travaille principalement sur des projets web ....
J'ai regardé les deux:
- http://www.codeproject.com/KB/dotnet/Auto_Increment_Version.aspx
- http://www.codeproject.com/KB/dotnet/build_versioning.aspx
et je ne pouvais pas croire que tant d'efforts pour faire quelque chose soit une pratique standard.
EDIT: Cela ne fonctionne pas dans VS2005 pour autant que je sache ( http://www.codeproject.com/KB/dotnet/AutoIncrementVersion.aspx )
Réponses:
Dans Visual Studio 2008, les œuvres suivantes.
Recherchez le fichier AssemblyInfo.cs et recherchez ces 2 lignes:
Vous pouvez essayer de changer cela en:
Mais cela ne vous donnera pas le résultat souhaité, vous vous retrouverez avec une version de produit de 1.0. * Et une version de fichier de 1.0.0.0 . Pas ce que tu veux!
Cependant, si vous supprimez la seconde de ces lignes et que vous avez juste:
Ensuite, le compilateur définira la version du fichier pour être égale à la version du produit et vous obtiendrez le résultat souhaité d'une incrémentation automatique du produit et de la version du fichier qui sont synchronisés. Par exemple, 1.0.3266.92689
la source
ouvrez le fichier AssemblyInfo.cs et modifiez
à
vous pouvez le faire dans IDE en accédant à project -> properties -> assembly information
Cependant, cela ne vous permettra d'incrémenter automatiquement la version de l'assemblage et vous donnera la
si vous essayez de placer un * dans le champ version du fichier.
Il suffit donc d'ouvrir le assemblyinfo.cs et de le faire manuellement.
la source
Une autre option pour modifier les numéros de version dans chaque build consiste à utiliser la tâche Version de MSBuild.Community.Tasks . Téléchargez simplement leur programme d'installation, installez-le, puis adaptez le code suivant et collez-le ensuite
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
dans votre.csproj
fichier:Remarque: adaptez la propriété StartDate à vos paramètres régionaux. Il n'utilise actuellement pas la culture invariante.
Pour la troisième version du 14 janvier 2010, cela crée un
VersionInfo.cs
avec ce contenu:Ce fichier doit ensuite être ajouté au projet (via Ajouter un élément existant ) et les lignes
AssemblyVersion
etAssemblyFileVersion
doivent être supprimées deAssemblyInfo.cs
.Les différents algorithmes de modification des composants de version sont décrits dans
$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.chm
et Propriétés de version .la source
J'ai trouvé une solution similaire aux chrétiens mais sans dépendre des tâches de la communauté MSBuild, ce n'est pas une option pour moi car je ne veux pas installer ces tâches pour tous nos développeurs.
Je génère du code et je le compile dans un assembly et je souhaite incrémenter automatiquement les numéros de version. Cependant, je ne peux pas utiliser l'astuce VS 6.0. * AssemblyVersion car il incrémente automatiquement les numéros de build chaque jour et rompt la compatibilité avec les assemblys qui utilisent un numéro de build plus ancien. Au lieu de cela, je veux avoir une AssemblyVersion codée en dur mais une AssemblyFileVersion à incrémentation automatique. J'ai accompli cela en spécifiant AssemblyVersion dans AssemblyInfo.cs et en générant un VersionInfo.cs dans MSBuild comme ceci,
Cela générera un fichier VersionInfo.cs avec un attribut Assembly pour AssemblyFileVersion où la version suit le schéma de YY.MM.DD.TTTT avec la date de construction. Vous devez inclure ce fichier dans votre projet et créer avec lui.
la source
[System.DateTime]::Now
un, sinon, il y a une condition de concurrence qui peut entraîner l'utilisation d'un ancien numéro de build si vous construisez vers minuit.DateTime.ToString
à des fins de démonstration, ou y a-t-il une raison particulière?Installez le complément Build Version Increment . Cela vous donne beaucoup plus de contrôle que l'option *.
la source
Pour obtenir les numéros de version, essayez
Pour définir le numéro de version, créez / modifiez AssemblyInfo.cs
Également comme note secondaire, le troisième nombre est le nombre de jours depuis le 2/1/2000 et le quatrième nombre est la moitié du nombre total de secondes dans la journée. Donc, si vous compilez à minuit, cela devrait être zéro.
la source
Il existe une extension Visual Studio Automatic Versions qui prend en charge Visual Studio (2012, 2013, 2015) 2017 et 2019.
Captures d'écran
la source
La définition d'un * dans le numéro de version dans AssemblyInfo ou sous les propriétés du projet comme décrit dans les autres publications ne fonctionne pas avec toutes les versions de Visual Studio / .NET.
Afaik cela n'a pas fonctionné dans VS 2005 (mais dans VS 2003 et VS 2008). Pour VS 2005, vous pouvez utiliser les éléments suivants: Incrémentation automatique de la version de Visual Studio 2005 et numéro de révision au moment de la compilation .
Mais sachez que la modification automatique du numéro de version n'est pas recommandée pour les assemblys à nom fort. La raison en est que toutes les références à un tel assembly doivent être mises à jour chaque fois que l'assembly référencé est reconstruit, car les références d'assembly à nom fort sont toujours une référence à une version d'assembly spécifique. Microsoft ne modifie lui-même le numéro de version des assemblys .NET Framework qu'en cas de modifications des interfaces. (NB: je recherche toujours le lien dans MSDN où je l'ai lu.)
la source
Pour obtenir des informations d'incrémentation (DateTime) dans la propriété AssemblyFileVersion qui a l'avantage de ne casser aucune dépendance.
En s'appuyant sur la solution de Boog (n'a pas fonctionné pour moi, peut-être à cause de VS2008?), Vous pouvez utiliser une combinaison d'un événement de pré-génération générant un fichier, en ajoutant ce fichier (y compris ses propriétés de version), puis en utilisant un moyen de lire ces valeurs à nouveau. C'est..
Événement pré-build:
Incluez le fichier VersionInfo.cs résultant (sous-dossier Propriétés) dans votre projet
Code pour récupérer la date (années en secondes):
Pas très confortable .. aussi, je ne sais pas si ça crée pas mal de reconstructions forcées (puisqu'un fichier change toujours).
Vous pouvez le rendre plus intelligent, par exemple, si vous ne mettez à jour le fichier VersionInfo.cs que toutes les quelques minutes / heures (en utilisant un fichier temporaire, puis en copiant / écrasant le vrai VersionInfo.cs si un changement suffisamment important est détecté). Je l'ai fait une fois avec succès.
la source
Réglez le numéro de version sur "1.0. *" Et il remplira automatiquement les deux derniers chiffres avec la date (en jours à partir d'un certain point) et l'heure (la moitié des secondes à partir de minuit)
la source
Il se trouve dans les propriétés de votre projet sous Publier
(~ http://screencast.com/t/Vj7rhqJO )
la source
Cake prend en charge les correctifs des fichiers AssemblyInfo. Avec cake in hands, vous disposez de moyens infinis pour implémenter l'incrémentation de version automatique.
Un exemple simple de version incrémentée comme le compilateur C #:
Ici:
Notez que vous pouvez corriger non seulement les versions mais également toutes les autres informations nécessaires .
la source
Aller au projet | Propriétés, puis Informations sur l'assemblage, puis Version de l'assemblage et mettez un * dans la dernière ou l'avant-dernière case (vous ne pouvez pas incrémenter automatiquement les composants majeurs ou mineurs).
la source
Utilisez la tâche AssemblyInfo du projet MSBuild Community Tasks ( http://msbuildtasks.tigris.org/ ) et intégrez-la dans votre fichier .csproj / .vbproj.
Il a un certain nombre d'options, dont une pour lier le numéro de version à la date et à l'heure.
Conseillé.
la source
En ce moment, pour ma candidature,
Retour
ver = 1.0.3251.27860
La valeur 3251 est le nombre de jours depuis le 1/1/2000. Je l'utilise pour mettre une date de création de version sur l'écran de démarrage de mon application. Lorsque je traite avec un utilisateur, je peux demander la date de création qui est plus facile à communiquer qu'un certain nombre long.
(Je suis un chef d'équipe soutenant une petite entreprise. Cette approche peut ne pas fonctionner pour vous.)
la source
La modification de AssemblyInfo fonctionne dans VS2012. Il semble étrange qu'il n'y ait pas plus de prise en charge pour cela dans Visual Studio, vous penseriez que c'était une partie de base du processus de génération / publication.
la source
Comment obtenir la version
{major}.{year}.1{date}.1{time}
Celui-ci est un peu expérimental, mais je l'aime bien. Inspiré par Jeff Atwood @ CodingHorror ( lien ).
Le numéro de version résultant devient
1.2016.10709.11641
(ce qui signifie 2016-07-09 16:41), ce qui permet1
s stupides en tête )Ajouter un nouvel élément à votre projet, sélectionnez Général -> Texte de modèle, nommez quelque chose comme
CustomVersionNumber
et ( le cas échéant) le commentaireAssemblyVersion
etAssemblyFileVersion
dansProperties/AssemblyInfo.cs
.Ensuite, lors de l'enregistrement de ce fichier ou de la création du projet, cela régénérera un
.cs
fichier situé en tant que sous-élément sous le.tt
fichier créé .la source
J'ai créé une application pour incrémenter automatiquement la version du fichier.
ajoutez la ligne suivante à la ligne de commande d'événement de pré-génération
C: \ temp \ IncrementFileVersion.exe $ (SolutionDir) \ Properties \ AssemblyInfo.cs
Construire le projet
Pour rester simple, l'application ne lance des messages qu'en cas d'erreur, pour confirmer que cela a bien fonctionné, vous devrez vérifier la version du fichier dans «Informations sur l'assemblage»
Remarque: Vous devrez recharger la solution dans Visual studio pour que le bouton «Informations sur l'assemblage» remplisse les champs, mais votre fichier de sortie aura la version mise à jour.
Pour des suggestions et des demandes, veuillez m'envoyer un e-mail à [email protected]
la source
Dans Visual Studio 2019
Ce n'était pas suffisant pour moi d'ajouter
Lors de la construction, il me lance cette erreur
Solution
Le format a été finalement acceptée après avoir fixé
Deterministic
àFalse
enproject.csproj
Éditer:
Pour certains réglage de la raison
Deterministic
pourFalse
foiré mon fichier de configuration charger et enregistrer sur des endroits différents.Solution de contournement:
J'ai configuré un événement post-build pour incrémenter le numéro de révision:
Script de lot d'événements post-build
Cela appelle un script PowerShell nommé
autoincrement_version.ps1
passant comme argument le chemin deAssemblyInfo.cs
Script Poweshell
Il incrémente automatiquement le numéro de révision à l'aide de Regex
la source
Peut-être, pour cette tâche, vous pouvez utiliser du code comme celui-ci:
et appelez-le depuis le chargement du formulaire.
Avec ce code, vous pouvez mettre à jour n'importe quelle partie des informations de fichier dans AssemblyInfo.cs (mais vous devez utiliser une structure de répertoire "standard").
la source
AssemblyInfoUtil . Gratuit. Open source.
la source
J'utilise cette approche https://stackoverflow.com/a/827209/3975786 en plaçant le modèle T4 dans un «Solution Items» et en l'utilisant avec «Add as Link» dans chaque projet.
la source
Il est peut-être trop tard pour répondre ici, mais j'espère que cela résoudra le problème mouvementé de quelqu'un.
Un moyen automatique de modifier la version d'assemblage de tous vos projets à l'aide du script PowerShell. Cet article résoudra bon nombre de vos problèmes.
la source
Chaque fois que je fais une construction, il incrémente automatiquement le chiffre le moins significatif.
Je ne sais pas comment mettre à jour les autres, mais vous devriez au moins le voir déjà ...
la source
Pour toute personne utilisant Tortoise Subversion, vous pouvez lier l'un de vos numéros de version au numéro de révision subversion de votre code source. Je trouve cela très utile (les auditeurs aiment vraiment ça aussi!). Pour ce faire, appelez l'utilitaire WCREV dans votre pré-génération et générez vos AssemblyInfo.cs à partir d'un modèle.
Si votre modèle s'appelle AssemblyInfo.wcrev et se trouve dans le répertoire AssemblyInfo.cs normal, et tortoise se trouve dans le répertoire d'installation par défaut, alors votre commande Pre-Build ressemble à ceci (NB All on one line):
Le fichier modèle inclurait la chaîne de substitution de jeton wcrev: $ WCREV $
eg
Remarque:
Comme votre AssemblyInfo.cs est maintenant généré, vous ne voulez pas que sa version soit contrôlée.
la source