c# - ¿Cómo puedo obtener la versión del archivo de montaje?
.net assemblies (6)
En AssemblyInfo
hay dos versiones de montaje:
-
AssemblyVersion
: Especifique la versión del ensamblaje que se atribuye. -
AssemblyFileVersion
: indica a un compilador que use un número de versión específico para el recurso de versión de archivo Win32. No se requiere 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
?
ACTUALIZACIÓN: Como mencionó Richard Grimes en mi post citado , @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 utilizando el [assembly: XXXAttribute]
, el compilador las VERSIONINFO
y las coloca en el recurso VERSIONINFO
.
Por la razón anterior, debe utilizar el enfoque en la respuesta de @ Xiaofu, ya que los atributos se eliminan una vez que la señal se ha 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 está buscando un atributo diferente, sustitúyalo por el de arriba)
Cuando quiero acceder a la versión del archivo de la aplicación (lo que se establece en Información de ensamblaje -> Versión del archivo), digamos, para configurar el texto de una etiqueta en el formulario de carga para mostrar la versión, acabo de usar
versionlabel.Text = "Version " + Application.ProductVersion;
Hay tres versiones : ensamblaje , archivo y producto . Son utilizados por diferentes características y adoptan 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;
Puede obtener la versión de ensamblaje con My.Application.Info.Version
Utilizar esta:
((AssemblyFileVersionAttribute)Attribute.GetCustomAttribute(
Assembly.GetExecutingAssembly(),
typeof(AssemblyFileVersionAttribute), false)
).Version;
O esto:
new Version(System.Windows.Forms.Application.ProductVersion);
Vea mi comentario anterior pidiendo una aclaración sobre lo que realmente quiere. Ojalá esto sea:
System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();
FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(assembly.Location);
string version = fvi.FileVersion;