Comprendre File Version et Assembly Version dans les Applications .NET

Lorsque vous travaillez sur des applications .NET, la gestion des versions peut devenir une tâche difficile. En particulier, les développeurs luttent souvent avec l’utilisation appropriée de File Version et Assembly Version. Dans cet article de blog, nous allons explorer ces deux attributs de versioning, leur signification et des conseils sur la façon de les utiliser efficacement dans vos projets.

Le Défi du Versioning

Les projets .NET nécessitent généralement deux numéros de version distincts : le File Version et le Assembly Version. Ceux-ci peuvent parfois prêter à confusion, surtout en ce qui concerne leurs applications et la manière dont ils interagissent entre eux. Voici un aperçu :

  • Assembly Version : Cet attribut indique la version du manifeste de l’assemblage lui-même, ce qui est crucial lors de la résolution de l’assemblage. Il est davantage lié à la compatibilité de votre code lorsqu’il est appelé par d’autres assemblages.

  • File Version : Cela se réfère à la version du fichier physique sur le disque, et il n’est pas utilisé par le runtime .NET. Cela signifie que les utilisateurs peuvent voir cette version dans les propriétés du fichier de l’assemblage, mais cela n’affecte pas la référence des assemblages lors de l’exécution.

Bonnes Pratiques pour Utiliser File Version et Assembly Version

Les Garder Séparés

Une pratique courante est de garder le versioning de l’assemblage constant tout en mettant à jour le versioning du fichier. Par exemple, si vous avez plusieurs assemblages comme un exécutable (exe) et plusieurs bibliothèques de liens dynamiques (dll), vous pouvez :

  • Définir la même Assembly Version pour tous les assemblages (exe et dll). De cette façon, vous maintenez votre interface d’assemblage cohérente.
  • Différencier le File Version pour les assemblages individuels (ex : exe a la version 1.0.0.0 tandis que dll1 a 1.0.0.1, dll2 a 1.0.0.2, etc.). Cela vous permet de suivre les modifications apportées spécifiquement aux exécutables.

Cette stratégie vous permet de maintenir une compréhension claire de la version de chaque DLL alignée avec l’exécutable, simplifiant ainsi la gestion de projet et minimisant les problèmes de compatibilité.

Augmentation Automatique des Versions

Dans certains cas, les développeurs préfèrent augmenter automatiquement le File Version pour chaque build tout en mettant à jour manuellement l’Assembly Version uniquement lors de modifications significatives. Cela signifie qu’après chaque compilation, le File Version pourrait refléter les spécificités de la compilation (par exemple, 1.0.0.1, 1.0.0.2, etc.), tandis que les mises à jour de l’Assembly Version se produisent à un intervalle plus large (comme 1.0.0 à 1.0.1, etc.).

Le Rôle de AssemblyInformationalVersion

L’attribut AssemblyInformationalVersion est un autre outil important de versioning. Cet attribut peut stocker une représentation en chaîne de la version, généralement utilisée à des fins d’information pour afficher des détails supplémentaires sur la version actuelle qui peuvent ne pas s’inscrire neatly dans les systèmes de versioning structurés.

  • Cela pourrait inclure des étiquettes comme “beta”, “candidat de version”, ou d’autres indicateurs qualitatifs.
  • Cela aide les utilisateurs à comprendre l’état du logiciel d’un coup d’œil.

Conclusion

Comprendre et utiliser efficacement File Version, Assembly Version et AssemblyInformationalVersion dans vos projets .NET peut mener à un meilleur contrôle des versions et à un processus de développement plus fluide. En adoptant des conventions de versioning cohérentes, vous pouvez minimiser les conflits potentiels et garder vos projets gérables.

Pour des conseils supplémentaires, vous pouvez consulter l’article de support de Microsoft : Comment utiliser Assembly Version et Assembly File Version.

En suivant ces pratiques, vous garderez non seulement votre code organisé mais également améliorerez la collaboration dans les environnements d’équipe où plusieurs développeurs travaillent sur la même application.