Il AssemblyInfo
existe deux versions d'assemblage:
AssemblyVersion
: Spécifiez la version de l'assemblage en cours d'attribution.AssemblyFileVersion
: Demande à un compilateur d'utiliser un numéro de version spécifique pour la ressource de version de fichier Win32. Il n'est pas nécessaire que la version du fichier Win32 soit identique au numéro de version de l'assembly.
Je peux obtenir le Assembly Version
avec la ligne de code suivante:
Version version = Assembly.GetEntryAssembly().GetName().Version;
Mais comment puis-je l'obtenir Assembly File Version
?
c#
.net
assemblies
version
Enyra
la source
la source
Réponses:
Voir mon commentaire ci-dessus demandant des éclaircissements sur ce que vous voulez vraiment. J'espère que c'est ça:
la source
FileVersionInfo
que desstring
propriétés et aucuneVersion
propriété?Assembly.GetEntryAssembly()
retourne NULL par exemple dans le contexte des compléments Office, ainsi que dans de nombreux autres cas. De plus, si vous pensez aux compléments / plugins - EntryAssembly est l'application hôte, et le plus souvent, vous voulez la version de YourCode (TM) :) En dehors de cela, cela vaut la peine d'ajouter à cette réponse que la réponseassembly.Location
utilisée peut également être nulle. (c'est-à-dire le premier cas aléatoire googlé : github.com/Azure/azure-functions-host/issues/1233 ) et cela se produit probablement encore plus souvent que d'avoir un assemblage d'entrée nul.Il existe trois versions : assemblage , fichier et produit . Ils sont utilisés par différentes fonctionnalités et prennent différentes valeurs par défaut si vous ne les spécifiez pas explicitement.
la source
string assemblyVersion = Assembly.GetExecutingAssembly().GetName().Version.ToString(); string assemblyVersion = Assembly.LoadFile('your assembly file').GetName().Version.ToString(); string fileVersion = FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location).FileVersion; string productVersion = FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location).ProductVersion;
[assembly: AssemblyVersion("2.0.*")]
pour fileVersion utiliser ===[assembly: AssemblyFileVersion("2.0.*")]
et pour productVersion utiliser ===[assembly: AssemblyInformationalVersion("2.0.*")]
Le dernier peut prendre le suffixe de chaîne pour laSemVer
compatibilité:[assembly: AssemblyInformationalVersion("2.0.0-alpha")]
AssemblyFileVersion
ne peut pas utiliser la*
notation suffixe. :( Il a besoin des quatre chiffres.[assembly: AssemblyFileVersion("2.0.0.1")]
Lorsque je souhaite accéder à la version du fichier d'application (ce qui est défini dans Informations sur l'assemblage -> Version du fichier), par exemple pour lui attribuer le texte d'une étiquette lors du chargement du formulaire pour afficher la version, je viens d'utiliser
la source
MISE À JOUR: Comme mentionné par Richard Grimes dans mon article cité , @Iain et @Dmitry Lobanov, ma réponse est correcte en théorie mais erronée en pratique.
Comme j'aurais dû m'en souvenir dans d'innombrables livres, etc., alors que l'on définit ces propriétés à l'aide de
[assembly: XXXAttribute]
, elles sont détournées par le compilateur et placées dans laVERSIONINFO
ressource.Pour la raison ci-dessus, vous devez utiliser l'approche de la réponse de @ Xiaofu car les attributs sont supprimés après que le signal en a été extrait.
(À partir de http://bytes.com/groups/net/420417-assemblyversionattribute - comme indiqué ici, si vous recherchez un attribut différent, remplacez-le par celui-ci)
la source
AssemblyName.Version
propriété uniquement. Mais avec tous les autres attributs, c'est la bonne façon de le faireAssemblyInformationalVersionAttribute
au lieu deAssemblyVersionAttribute
sur .net core 3.1Utilisez ceci:
Ou ca:
la source