Quelles sont les différences entre AssemblyVersion, AssemblyFileVersion et AssemblyInformationalVersion ?

Quelles sont les différences entre AssemblyVersion, AssemblyFileVersion et AssemblyInformationalVersion ?

AssemblyVersion

C’est l’endroit où les autres assemblages qui référencent le vôtre vont chercher. Si ce numéro change, les autres assemblages doivent mettre à jour leurs références vers votre assemblage ! Ne mettez à jour cette version que si cela casse la rétrocompatibilité. Le AssemblyVersion est obligatoire.

J’utilise le format : majeur.mineur (et majeur pour les bases de code très stables). Cela donnerait :

[assembly: AssemblyVersion("1.3")] // in AssemblyInfo.cs

<AssemblyVersion>1.3</AssemblyVersion> // in .csproj

Si vous suivez strictement le SemVer, cela signifie que vous ne mettez à jour que lorsque le majeur change, donc 1.0, 2.0, 3.0, etc.

AssemblyFileVersion

Utilisé pour le déploiement (comme les programmes d’installation). Vous pouvez incrémenter ce numéro pour chaque déploiement. Utilisez-le pour distinguer les assemblages qui ont le même AssemblyVersion mais qui sont générés à partir de compilations et/ou de code différents.

Sous Windows, il peut être consulté dans les propriétés du fichier.

Le AssemblyFileVersion est optionnel. S’il n’est pas spécifié, le AssemblyVersion est utilisé.

J’utilise le format : majeur.mineur.correctif.build, où je suis le SemVer pour les trois premières parties et j’utilise le numéro de build du serveur de build pour la dernière partie (0 pour un build local).
Cela donnerait :

[assembly: AssemblyFileVersion("1.3.2.42")] // in AssemblyInfo.cs

<FileVersion>1.3.2.42</FileVersion> // in .csproj

Sachez que System.Version nomme ces parties major.minor.build.revision !

AssemblyInformationalVersion

La version produit de l’assemblage. C’est la version que vous utiliseriez en parlant aux clients ou pour l’affichage sur votre site web. Cette version peut être une chaîne, comme ‘1.0 Release Candidate’.

Le AssemblyInformationalVersion est optionnel. S’il n’est pas spécifié, le AssemblyFileVersion est utilisé.

J’utilise le format : majeur.mineur[.correctif] [révision sous forme de chaîne]. Cela donnerait :

[assembly: AssemblyInformationalVersion("1.3 RC1")] // in AssemblyInfo.cs

<InformationalVersion>

*(Réponse tronquée)*