Comment puis-je obtenir de l'assemblée de la version de fichier
Dans AssemblyInfo
il y a deux versions de montage:
AssemblyVersion
: Spécifiez la version de l'assemblée étant attribué.AssemblyFileVersion
: Demande d'un compilateur d'utiliser un numéro de version Win32 de version de fichier de ressources. Le fichier Win32 version n'est pas nécessaire d'être le même que l'assemblée du numéro de version.
Je peux obtenir le Assembly Version
avec la ligne de code suivante:
Version version = Assembly.GetEntryAssembly().GetName().Version;
Mais comment puis-je obtenir le Assembly File Version
?
- Qu'entendez-vous par "assemblée de version de fichier", par opposition à la version de l'assembly"? Pouvez-vous donner un exemple?
- La Version" est ce que .NET utilise en interne. "Assemblée de la Version de Fichier" est ce que s'affiche lorsque vous cliquez droit sur un fichier et sélectionnez "propriétés" puis l'onglet "détails". Ils ne sont pas les mêmes.
- J'ai trouvé que la version de l'assembly est ce qui est utilisé lors de la détermination de l'utilisateur.config emplacement dans AppData.
Vous devez vous connecter pour publier un commentaire.
Voir mon commentaire ci-dessus en demandant des éclaircissements sur ce que vous voulez vraiment. J'espère que c'est ça:
FileVersionInfo
seulementstring
propriétés et pas deVersion
propriétés?assembly.Location
utilisé dans la réponse peut être null ainsi (comme c'est le cas aléatoire googlé out: github.com/Azure/azure-functions-host/issues/1233) et que, probablement, il arrive encore plus souvent que d'avoir la valeur null d'entrée de l'assemblée.Il y a trois versions: assemblée, fichier, et produit. Ils sont utilisés par des caractéristiques différentes et de prendre différentes valeurs par défaut si vous n'avez pas explicite les préciser.
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 utilisation ===[assembly: AssemblyFileVersion("2.0.*")]
et pour productVersion utilisation ===[assembly: AssemblyInformationalVersion("2.0.*")]
Le dernier peut prendre de la chaîne de suffixe pourSemVer
compatibilité:[assembly: AssemblyInformationalVersion("2.0.0-alpha")]
AssemblyFileVersion
ne pouvez pas utiliser le*
suffixe de notation. 🙁 Il a besoin de tous les quatre numéros.[assembly: AssemblyFileVersion("2.0.0.1")]
Quand je veux accéder à l'application de la version de fichier (ce qui est définie dans l'Assemblée de l'Information -> Fichier version), par exemple pour définir un texte de l'étiquette sur le formulaire de charge pour afficher la version, j'ai juste utilisé
Mise à JOUR: Comme mentionné par Richard Grimes dans mon post cité, @Iain et @Dimitri Lobanov, ma réponse est juste en théorie, mais faux dans la pratique.
Que je devrais avoir mémorisé d'un nombre incalculable de livres, etc., tandis que l'un des ensembles de ces propriétés à l'aide de la
[assembly: XXXAttribute]
, ils se détourné par le compilateur et placé dans laVERSIONINFO
ressource.Pour la raison invoquée ci-dessus, vous devez utiliser l'approche de @Xiaofu réponse que les attributs sont supprimés après que le signal a été extraite.
(À partir de http://bytes.com/groups/net/420417-assemblyversionattribute - comme l'a noté, si vous êtes à la recherche pour un attribut différent, remplacez-le dans le ci-dessus)
AssemblyName.Version
propriété seulement. Mais avec chaque autre attribut, c'est la bonne façon de le faireUtiliser ceci:
Ou ceci:
Vous pouvez obtenir la version de l'assembly avec
My.Application.Info.Version
Application
d'?Microsoft.VisualBasic...
de l'assemblée et la vous aurez laMy
objet racine (techniquement, c'est juste une .NET framework assemblée, tout ce que vous devez faire est d'obtenir passé en tapant un simple 5 lettre de mot :P)