Cómo puedo obtener la versión del archivo ensamblador


En AssemblyInfo hay dos versiones de ensamblaje:

  1. AssemblyVersion: Especifique la versión del ensamblado que se está atribuyendo.
  2. AssemblyFileVersion: Indica a un compilador que use un número de versión específico para el recurso de versión del archivo Win32. No es necesario que la versión del archivo Win32 sea la misma que el número de versión del ensamblado.

Puedo obtener el Assembly Version con la siguiente línea de código:

Version version = Assembly.GetEntryAssembly().GetName().Version;

Pero, ¿cómo puedo obtener el Assembly File Version?

Author: Rohit, 2009-05-26

6 answers

Ver mi comentario anterior pidiendo una aclaración sobre lo que realmente quiere. Espero que esto sea todo:

System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();
FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(assembly.Location);
string version = fvi.FileVersion;
 729
Author: Xiaofu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-12 16:13:23

Hay tres versiones: asamblea, archivo, y producto. Son utilizados por diferentes características y toman diferentes valores predeterminados si no los especifica explícitamente.

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;
 142
Author: Check6,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-19 17:15:17

Cuando quiero acceder a la versión del archivo de la aplicación (lo que se establece en Información del ensamblaje - > Versión del archivo), digamos que para establecer el texto de una etiqueta en la carga del formulario para mostrar la versión, acabo de usar

versionlabel.Text = "Version " + Application.ProductVersion;
 56
Author: syntap,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-05-14 11:43:06

ACTUALIZACIÓN: Como menciona Richard Grimes en mi citado post, @Iain y @Dmitry Lobanov, mi respuesta es correcta en teoría, pero incorrecta en la práctica.

Como debería haber recordado de innumerables libros, etc., mientras que uno establece estas propiedades usando el [assembly: XXXAttribute], son highjackeadas por el compilador y colocadas en el recurso VERSIONINFO.

Por la razón anterior, debe usar el enfoque en @ Xiaofu's answer ya que los atributos se eliminan después de que la señal haya sido extraído de ellos.


public static string GetProductVersion()
{
  var attribute = (AssemblyVersionAttribute)Assembly
    .GetExecutingAssembly()
    .GetCustomAttributes( typeof(AssemblyVersionAttribute), true )
    .Single();
   return attribute.InformationalVersion;
}

(De http://bytes.com/groups/net/420417-assemblyversionattribute - como se indica allí, si usted está buscando un atributo diferente, sustituir que en el anterior)

 20
Author: Ruben Bartelink,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:26:36

Usa esto:

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

O esto:

new Version(System.Windows.Forms.Application.ProductVersion);
 3
Author: Pieter Geerkens,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-30 14:33:26

Puede obtener la versión de ensamblaje con My.Application.Info.Version

 -4
Author: Viacheslav,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-09-11 15:41:10