En AssemblyInfo
hay dos versiones de montaje:
AssemblyVersion
: Especifique la versión del ensamblado que se atribuye.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 se requiere 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
?
c#
.net
assemblies
version
Enyra
fuente
fuente
Respuestas:
Vea mi comentario anterior pidiendo aclaraciones sobre lo que realmente quiere. Ojalá sea este:
fuente
FileVersionInfo
Solo tienestring
propiedades y no tieneVersion
propiedades?Assembly.GetEntryAssembly()
devuelve NULL, por ejemplo, en el contexto de los complementos de Office, y también en muchos otros casos. Además, si piensa en complementos / complementos: EntryAssembly es la aplicación de host, y la mayoría de las veces desea la versión de YourCode (TM) :) Aparte de eso, vale la pena agregar a esta respuesta que laassembly.Location
utilizada en la respuesta también puede ser nula (es decir, primer caso aleatorio buscado en Google: github.com/Azure/azure-functions-host/issues/1233 ) y eso probablemente ocurre incluso con más frecuencia que tener un ensamblaje de entrada nulo.Hay tres versiones : ensamblaje , archivo y producto . Son utilizados por diferentes características y toman diferentes valores predeterminados si no los especifica explícitamente.
fuente
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;
[assembly: AssemblyVersion("2.0.*")]
para fileVersion use ===[assembly: AssemblyFileVersion("2.0.*")]
y para productVersion use ===[assembly: AssemblyInformationalVersion("2.0.*")]
El último puede tener sufijo de cadena porSemVer
compatibilidad:[assembly: AssemblyInformationalVersion("2.0.0-alpha")]
AssemblyFileVersion
no puede usar la*
notación de sufijo. :( Necesita los cuatro números.[assembly: AssemblyFileVersion("2.0.0.1")]
Cuando quiero acceder a la versión del archivo de la aplicación (lo que está configurado en Información de ensamblaje -> Versión del archivo), digamos que para configurar el texto de una etiqueta en la carga del formulario para mostrar la versión, acabo de usar
fuente
ACTUALIZACIÓN: Como lo 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
[assembly: XXXAttribute]
, el compilador las roba y las coloca en elVERSIONINFO
recurso.Por la razón anterior, debe usar el enfoque en la respuesta de @ Xiaofu ya que los atributos se eliminan después de que se les extrae la señal.
(De http://bytes.com/groups/net/420417-assemblyversionattribute , como se indica allí, si está buscando un atributo diferente, sustitúyalo por el anterior)
fuente
AssemblyName.Version
propiedad. Pero con cualquier otro atributo es la forma correcta de hacerloAssemblyInformationalVersionAttribute
lugar deAssemblyVersionAttribute
.net core 3.1Utilizar este:
O esto:
fuente