¿Cómo puedo obtener la versión del archivo de ensamblaje?

En AssemblyInfo hay dos versiones de ensamblaje:

  1. AssemblyVersion : especifique la versión del ensamblaje que se atribuye.
  2. AssemblyFileVersion : indica a un comstackdor que use un número de versión específico para el recurso de la 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 ensamblaje.

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

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

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

Vea mi comentario anterior pidiendo aclaraciones sobre lo que realmente quiere. Espero que sea esto:

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

Hay tres versiones : ensamblaje , 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; 

Cuando quiero acceder a la versión del archivo de la aplicación (lo que está configurado en Información de la Asamblea -> Versión del archivo), diga para establecer el texto de una etiqueta en la carga del formulario para mostrar la versión, acabo de utilizar

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

ACTUALIZACIÓN: Como mencionó Richard Grimes en mi publicación citada , @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 uno establece estas propiedades usando el [assembly: XXXAttribute] , el comstackdor los VERSIONINFO y los coloca en el recurso VERSIONINFO .

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


 cadena estática pública GetProductVersion ()
 {
   var attribute = (AssemblyVersionAttribute) Assembly
     .GetExecutingAssembly ()
     .GetCustomAttributes (typeof (AssemblyVersionAttribute), true)
     .Soltero();
    return attribute.InformationalVersion;
 }

(De http://bytes.com/groups/net/420417-assemblyversionattribute – como se indica allí, si está buscando un atributo diferente, sustitúyalo por el anterior)

Utilizar esta:

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

O esto:

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

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