¿Cuál es la mejor manera de utilizar la versión de archivo y la versión de ensamblaje?

StackOverflow https://stackoverflow.com/questions/14770

  •  08-06-2019
  •  | 
  •  

Pregunta

En .NET hay dos números de versión disponibles al crear un proyecto, la versión del archivo y la versión del ensamblado.¿Cómo estás usando estos números?¿Mantenerlos igual?¿Incrementar automáticamente uno, pero cambiar manualmente el otro?

¿Qué pasa también con el AssemblyInformationalVersion ¿atributo?

Encontré este artículo de soporte de Microsoft Knowledge Base (KB) que brindó ayuda: Cómo utilizar la versión de ensamblaje y la versión de archivo de ensamblaje.

¿Fue útil?

Solución

En un escenario en el que tengo varios conjuntos de archivos (es decir,1 exe y 5 dlls) Usaré una versión de archivo diferente para cada uno, pero la misma versión ensambladora para todos, lo que le permitirá saber con qué exe va cada uno de los dlls.

Otros consejos

En soluciones con múltiples proyectos, una cosa que he encontrado muy útil es que todos los archivos AssemblyInfo apunten a un único proyecto que gobierna el control de versiones.Entonces mis AssemblyInfos tienen una línea:

[assembly: AssemblyVersion(Foo.StaticVersion.Bar)]

Tengo un proyecto con un solo archivo que declara la cadena:

namespace Foo
{
    public static class StaticVersion
    {
         public const string Bar= "3.0.216.0"; // 08/01/2008 17:28:35
    }
}

Mi proceso de compilación automatizado simplemente cambia esa cadena extrayendo la versión más reciente de la base de datos e incrementando el penúltimo número.

Solo cambio el número de compilación principal cuando el conjunto de funciones cambia drásticamente.

No cambio la versión del archivo en absoluto.

El artículo de KB menciona la distinción más importante:Las versiones de los archivos sólo se utilizan con fines de visualización, mientras que la versión ensamblada juega un papel importante en el comportamiento de carga de .NET.

Si cambia el número de versión del ensamblaje, entonces la identidad de su ensamblaje en su conjunto ha cambiado.Los desarrolladores necesitarán reconstruir para hacer referencia a su nueva versión (a menos que implemente alguna "política" de versiones automáticas) y en tiempo de ejecución solo se cargarán los ensamblados con números de versión coincidentes.

Esto es importante en mi entorno, donde necesitamos un número de versión incremental y altamente visible para fines de auditoría, pero no queremos obligar a los desarrolladores a reconstruir o tener muchas versiones simultáneamente en producción.En este caso, para cambios menores compatibles con versiones anteriores, actualizamos la versión del archivo, pero no la versión ensamblada.

Las versiones de los archivos sólo se utilizan con fines de visualización, mientras que la versión ensamblada juega un papel importante en el comportamiento de carga de .NET.

No exactamente.La versión del archivo también es importante para Windows Installer cuando actualiza una versión existente sobre una anterior.

Con mi aplicación actual, cada proyecto VS tiene un enlace a un archivo fuente "AssemblyBuildInfo" que tiene los siguientes atributos:

[assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyCompany("Acme Corporationy")]
[assembly: AssemblyCopyright("Copyright ©  2009 Acme Corporation")]

De esta manera, todos los ensamblados de mi solución comparten la misma versión e información de la empresa (es decir, si tengo que cambiarla, la cambio solo una vez).Al excluir FileVersion, se establece automáticamente en AssemblyVersion.

@Adán:¿Está cambiando la versión del archivo con cada compilación?¿Está utilizando control de versiones (SYN o VSS) y esa información para vincular la fuente a los archivos binarios?

Parece tener sentido que la versión ensambladora siga siendo la misma.es decir."2.0.0.0".Eso corresponde al despliegue del producto.

La versión del archivo cambia para coincidir con la revisión del control de código fuente."2.0.??.revisión" Esto proporcionaría un enlace desde un dll (o exe) específico a la fuente que lo creó.

Escribí una publicación de blog sobre este tema que puede ser útil para la comunidad. http://blog.raffaeu.com/archive/2011/12/11/sharing-assembly-version-in-visual-studio-2010.aspx

Los mantengo igual.Pero claro, no tengo ensamblados de varios archivos, que es cuando el número de versión de ensamblaje se vuelve importante.Utilizo codificación de fecha al estilo de Microsoft para mis números de compilación, en lugar de incremento automático (no encuentro que la cantidad de veces que se ha compilado algo sea tan importante).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top