741 votos

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

En AssemblyInfo hay dos versiones de asamblea:

  1. AssemblyVersion: Especificar la versión de la asamblea que se atribuyen.
  2. AssemblyFileVersion: Indica al compilador que utilice un determinado número de versión de los archivos de Win32 versión de recursos. El Win32 versión del archivo no es necesario que sea el mismo que el de la asamblea del número de versión.

Puedo obtener la 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?

880voto

Xiaofu Puntos 6163

Ver mi comentario anterior pidiendo una aclaración sobre lo que realmente quieres. Esperemos que esto es:

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

212voto

Check6 Puntos 199

Existen tres versiones: montaje, archivo, y el producto. Son utilizados por diferentes características y adquieren diferentes valores por defecto si no se especifica explícitamente ellos. Para más información ver: http://all-cosas-pure.blogspot.com/2009/09/assembly-versión de archivo-version-product.html .

69voto

syntap Puntos 131

Cuando quiero acceder a la versión del archivo de la aplicación (lo que se encuentra en la Información de la Asamblea -> Versión del archivo), por ejemplo para establecer el texto de una etiqueta para que la carga del formulario para mostrar la versión, yo sólo he usado

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

23voto

Ruben Bartelink Puntos 23945

ACTUALIZACIÓN: Como se ha mencionado por Richard Grimes en mi citado post, @Iain y @Dmitry Lobanov, mi respuesta es correcto en teoría, pero mal en la práctica.

Como me he acordado de un sinnúmero de libros, etc., mientras uno de los conjuntos de estas propiedades, utilizando la [assembly: XXXAttribute], consiguen secuestrado por el compilador y se coloca en la VERSIONINFO de los recursos.

Por la razón anterior, es necesario utilizar el enfoque en @Xiaofu la respuesta de que los atributos se eliminan después de que la señal de que se ha extraído de ellos.


public static string GetProductVersion()
{
 var atributo = (AssemblyVersionAttribute)de la Asamblea
.GetExecutingAssembly()
 .GetCustomAttributes( typeof(AssemblyVersionAttribute), true )
.Single();
 volver attribute.InformationalVersion;
}

(A partir de http://bytes.com/groups/net/420417-assemblyversionattribute - como se señaló allí, si usted está buscando un atributo diferente, sustituya, que en la de arriba)

12voto

Clark Kent Puntos 5845

Utilice esta

  static public class ApplicationInfo
    {
        public static Version Version { get { return Assembly.GetCallingAssembly().GetName().Version; } }

        public static string Title
        {
            get
            {
                object[] attributes = Assembly.GetCallingAssembly().GetCustomAttributes(typeof(AssemblyTitleAttribute), false);
                if (attributes.Length > 0)
                {
                    AssemblyTitleAttribute titleAttribute = (AssemblyTitleAttribute)attributes[0];
                    if (titleAttribute.Title.Length > 0) return titleAttribute.Title;
                }
                return System.IO.Path.GetFileNameWithoutExtension(Assembly.GetExecutingAssembly().CodeBase);
            }
        }

        public static string ProductName
        {
            get
            {
                object[] attributes = Assembly.GetCallingAssembly().GetCustomAttributes(typeof(AssemblyProductAttribute), false);
                return attributes.Length == 0 ? "" : ((AssemblyProductAttribute)attributes[0]).Product;
            }
        }

        public static string Description
        {
            get
            {
                object[] attributes = Assembly.GetCallingAssembly().GetCustomAttributes(typeof(AssemblyDescriptionAttribute), false);
                return attributes.Length == 0 ? "" : ((AssemblyDescriptionAttribute)attributes[0]).Description;
            }
        }

        public static string CopyrightHolder
        {
            get
            {
                object[] attributes = Assembly.GetCallingAssembly().GetCustomAttributes(typeof(AssemblyCopyrightAttribute), false);
                return attributes.Length == 0 ? "" : ((AssemblyCopyrightAttribute)attributes[0]).Copyright;
            }
        }

        public static string CompanyName
        {
            get
            {
                object[] attributes = Assembly.GetCallingAssembly().GetCustomAttributes(typeof(AssemblyCompanyAttribute), false);
                return attributes.Length == 0 ? "" : ((AssemblyCompanyAttribute)attributes[0]).Company;
            }
        }

    }
 

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X