2009-09-18 9 views
6

Ni siquiera estoy seguro de si el versionado es la palabra correcta, pero tendrá que hacer. Quiero comenzar a poner una nota de "Versión x.x.xx" en nuestras aplicaciones internas a pedido de nuestros usuarios, por lo que tienen una idea aproximada de cuándo se actualiza (y en el futuro, hagan un enlace que muestre cambios). Parece que usar el archivo AssemblyInfo.cs es una buena idea: le permite actualizar automáticamente la revisión build + que es buena (para .DLL de la aplicación web).Control de versiones de una aplicación web de ASP.NET

¿Es este un enfoque decente? Luego, cada vez que alcanzo los hitos de la versión mayor/menor para mi aplicación. Puedo actualizarlos manualmente, ¿correcto? Todo esto supone que puedo obtener la información de la versión de mi aplicación. de alguna manera, que tampoco tengo ni idea de cómo hacerlo.

Respuesta

8

Nosotros haga lo mismo en nuestra aplicación. Aunque puede agregue el número de versión manualmente, nuestra información de versión se agrega al ensamblaje como parte de nuestro proceso de compilación automatizada (utilizamos un servicio TFS 2008 personalizado), que recomiendo encarecidamente. Aquí está el control que usamos (acabamos de poner esto en la parte inferior de la página maestra):

public class BuildVersion : WebControl 
{ 
    /// <summary> 
    /// Render override 
    /// </summary> 
    /// <param name="writer"></param> 
    protected override void Render(HtmlTextWriter writer) 
    { 
     writer.Write("<!--"); 
     writer.Write("Version: "); 
     writer.Write(GetAssemblyVersion()); 
     writer.Write("-->"); 
    } 

    private string GetAssemblyVersion() 
    { 
     try 
     { 
      Object[] atts = Assembly.GetAssembly(this.GetType()).GetCustomAttributes(true); 
      foreach (Object o in atts) 
      { 
       if (o.GetType() == typeof(AssemblyVersionAttribute)) 
       { 
        return ((AssemblyVersionAttribute)o).Version; 
       } 
      } 
      return String.Empty; 
     } 
     catch 
     { 
      return "Failed to load assembly"; 
     } 
    } 
} 
+0

+1 para "Muéstrame el código" –

+0

Voy a intentarlo. Muchas gracias. –

1

Automatizamos las versiones con subversion, ccnet y nant.

Nuestro script analiza la ruta de la carpeta (/Branches/1.4.5/Source ...) y extrae el número de versión (1.4.5). Después de eso recuperamos el número de revisión actual de la subversión y lo colocamos en la última posición de la versión (es decir, 1.4.5.346). Una vez que tenemos el número de versión completo, lo inyectamos en todos los ensamblajes y lo escribimos en un archivo version.txt para que sea fácil determinar qué versión está implementada actualmente en los servidores web.

+0

Muestra el código – Zote

0

Dado un Assembly a, use a.GetName(). Version.ToString() para obtener la versión en código.

GetName devuelve AssemblyName.

La versión devuelve la versión como se especifica en su archivo AssemblyInfo.

2

Puede usar números de versión en la forma que describe, simplemente cambiando los números en el archivo AssemblyInfo a medida que crea nuevas versiones, pero es mejor cuando se vincula a un sistema de control de código fuente. Usamos los proyectos CrusieControl.NET e Implementación web para establecer el número de versión, pero estoy seguro de que otros tendrán otras sugerencias.

También se puede obtener el número de versión de un sitio web compilado utilizando este código:

System.Reflection.Assembly.GetExecutingAssembly.GetName.Version.ToString 

si su funcionamiento en modo de depuración antes de compilar se mostrará 0.0.0.0 pero se puede comprobar esto y visualización El "desarrollo" o algo parecido para mostrar a sí mismo que se ejecuta localmente (no es que no vas a saber pero si alguna vez veo 0.0.0.0 sabes que algo está mal.

Espero que ayude

+0

Algunos paréntesis errores ... GetExecutingAssembly(). GetName(). Version.ToString(); – Mayo

+0

Nunca utilicé CruiseControl (o nAnt como Charles mentioend), así que también tendré que analizarlos. Más herramientas para mi cinturón ¡Gracias! –

1

No es una mala idea. La solución para conseguir su Web ASP.NET versión de la aplicación DLL es simple:

VB.NET

My.Application.Info.Version (VB.NET)

C#

Obtener acceso al espacio de nombres My como se muestra aquí http://www.codeproject.com/KB/cs/MyNamespace.aspx

Mucho más fácil que usar toneladas de código.

Cuestiones relacionadas