Quelle est la meilleure façon d’utiliser la version de fichier et la version d’assembly ?

StackOverflow https://stackoverflow.com/questions/14770

  •  08-06-2019
  •  | 
  •  

Question

Dans .NET, deux numéros de version sont disponibles lors de la création d'un projet : la version du fichier et la version de l'assembly.Comment utilisez-vous ces chiffres ?Les garder pareils ?Incrémenter automatiquement l'un, mais changer manuellement l'autre ?

Qu'en est-il également du AssemblyInformationalVersion attribut?

J'ai trouvé cet article de support de la Base de connaissances Microsoft (KB) qui fournissait de l'aide : Comment utiliser la version d'assemblage et la version du fichier d'assemblage.

Était-ce utile?

La solution

Dans un scénario où j'ai plusieurs assemblys de fichiers (c'est-à-dire1 exe et 5 dll) J'utiliserai une version de fichier différente pour chacun, mais la même version d'assembly pour chacun d'eux, vous permettant de savoir à quel exe correspond chacune des dll.

Autres conseils

Dans les solutions avec plusieurs projets, une chose que j'ai trouvée très utile est que tous les fichiers AssemblyInfo pointent vers un seul projet qui régit la gestion des versions.Donc mes AssemblyInfos ont une ligne :

[assembly: AssemblyVersion(Foo.StaticVersion.Bar)]

J'ai un projet avec un seul fichier qui déclare la chaîne :

namespace Foo
{
    public static class StaticVersion
    {
         public const string Bar= "3.0.216.0"; // 08/01/2008 17:28:35
    }
}

Mon processus de construction automatisé modifie ensuite simplement cette chaîne en extrayant la version la plus récente de la base de données et en incrémentant l'avant-dernier numéro.

Je ne change le numéro de build majeur que lorsque l'ensemble des fonctionnalités change radicalement.

Je ne change pas du tout la version du fichier.

L'article de la base de connaissances mentionne la distinction la plus importante :Les versions de fichiers ne sont utilisées qu'à des fins d'affichage, tandis que la version d'assembly joue un rôle important dans le comportement de chargement de .NET.

Si vous modifiez le numéro de version de l'assembly, l'identité de votre assembly dans son ensemble a changé.Les développeurs devront reconstruire pour référencer votre nouvelle version (sauf si vous mettez en place une "politique" de gestion automatique des versions) et au moment de l'exécution, seuls les assemblys avec des numéros de version correspondants seront chargés.

Ceci est important dans mon environnement, où nous avons besoin d'un numéro de version incrémentiel et très visible à des fins d'audit, mais nous ne voulons pas forcer les développeurs à reconstruire ou à avoir plusieurs versions simultanément en production.Dans ce cas, pour des modifications mineures rétrocompatibles, nous mettons à jour la version du fichier, mais pas la version de l'assembly.

Les versions de fichiers ne sont utilisées qu'à des fins d'affichage, tandis que la version d'assembly joue un rôle important dans le comportement de chargement de .NET.

Pas assez.La version du fichier est également importante pour Windows Installer lorsque vous mettez à niveau une version existante par rapport à une version précédente.

Avec mon application actuelle, chaque projet VS possède un lien vers un fichier source "AssemblyBuildInfo" qui possède les attributs suivants :

[assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyCompany("Acme Corporationy")]
[assembly: AssemblyCopyright("Copyright ©  2009 Acme Corporation")]

De cette façon, tous les assemblys de ma solution partagent les mêmes informations de version et d’entreprise (ce qui signifie que si je dois les modifier, je ne les modifie qu’une seule fois).En excluant FileVersion, il est automatiquement défini sur AssemblyVersion.

@Adam:Changez-vous la version du fichier à chaque build ?Utilisez-vous le contrôle de version (SYN ou VSS) et utilisez-vous ces informations pour relier la source aux binaires ?

Il semble logique que la version Assembly reste la même.c'est à dire."2.0.0.0".Cela correspond au déploiement du produit.

La version du fichier change pour correspondre à la révision du contrôle de source."2.0.??.revision" Cela fournirait un lien depuis une DLL (ou un exe) spécifique vers la source qui l'a construite.

J'ai écrit un article de blog sur ce sujet qui pourrait être utile à la communauté http://blog.raffaeu.com/archive/2011/12/11/sharing-assembly-version-in-visual-studio-2010.aspx

Je les garde pareils.Mais alors, je n’ai pas d’assemblys multifichiers, c’est à ce moment-là que le numéro AssemblyVersion devient important.J'utilise le codage de date de style Microsoft pour mes numéros de build, plutôt que l'auto-incrémentation (je ne trouve pas que le nombre de fois où quelque chose a été construit soit si important).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top