Question Comment puis-je obtenir la version du fichier d'assemblage


Dans AssemblyInfo il y a deux versions d'assemblage:

  1. AssemblyVersion: Spécifiez la version de l'assembly attribué.
  2. AssemblyFileVersion: Indique à un compilateur d'utiliser un numéro de version spécifique pour la ressource de version de fichier Win32. La version du fichier Win32 n'est pas requise pour être le même que le 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 obtenir le Assembly File Version?


581
2018-05-26 08:19


origine


Réponses:


Voir mon commentaire ci-dessus demandant des éclaircissements sur ce que vous voulez vraiment. Espérons que c'est ça:

System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();
FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(assembly.Location);
string version = fvi.FileVersion;

716
2018-05-26 08:26



Il y a trois versions: Assemblée, 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.

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;

134
2017-10-22 08:51



Lorsque je veux accéder à la version du fichier de l'application (ce qui est défini dans Informations sur l'assemblage -> Version du fichier), disons de définir le texte d'une étiquette sur le formulaire de chargement pour afficher la version, je viens d'utiliser

versionlabel.Text = "Version " + Application.ProductVersion;

56
2018-02-25 17:11



MISE À JOUR: Comme mentionné par Richard Grimes dans mon post cité, @Iain et @Dmitry Lobanov, ma réponse est juste en théorie mais erronée dans la pratique.

Comme je me serais souvenu d'innombrables livres, etc., alors que l'on définit ces propriétés en utilisant le [assembly: XXXAttribute], ils sont détournés par le compilateur et placés dans le VERSIONINFO Ressource.

Pour la raison ci-dessus, vous devez utiliser l'approche dans @ La réponse de Xiaofu comme les attributs sont supprimés après que le signal a été extrait d'eux.


chaîne statique publique GetProductVersion ()
{
  var attribute = (AssemblyVersionAttribute) Assemblage
    .GetExecutingAssembly ()
    .GetCustomAttributes (typeof (AssemblyVersionAttribute), true)
    .Unique();
   return attribute.InformationalVersion;
}

(De http://bytes.com/groups/net/420417-assemblyversionattribute - comme indiqué ci-dessus, si vous cherchez un attribut différent, remplacez-le par le précédent)


20
2018-05-26 08:24



Utilisez ceci:

((AssemblyFileVersionAttribute)Attribute.GetCustomAttribute(
    Assembly.GetExecutingAssembly(), 
    typeof(AssemblyFileVersionAttribute), false)
).Version;

Ou ca:

new Version(System.Windows.Forms.Application.ProductVersion);

2
2018-06-19 02:50



Vous pouvez obtenir la version d'assemblage avec My.Application.Info.Version


-4
2017-09-11 14:51