Versiones de una aplicación web ASP.NET
-
22-07-2019 - |
Pregunta
Ni siquiera estoy seguro de si versionar es la palabra correcta, pero tendrá que hacerlo. Quiero comenzar a poner una nota de 'Versión x.x.xx' en nuestras aplicaciones internas a pedido de nuestros usuarios, para que tengan una idea aproximada de cuándo se actualiza (y en el futuro, haga un enlace que muestre cambios). Parece que usar el archivo AssemblyInfo.cs es una buena idea: le permite actualizar automáticamente la compilación + revisión, lo cual es bueno (para el .DLL de la aplicación web).
¿Es este un enfoque decente? Luego, cada vez que alcanzo los hitos de la versión principal / secundaria de 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 idea de cómo hacerlo.
Solución
Hacemos lo mismo en nuestra aplicación. Aunque puede agregar 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 automatizado (utilizamos un servicio personalizado de TFS 2008), que recomiendo encarecidamente. Aquí está el control que usamos (simplemente lo ponemos al final 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";
}
}
}
Otros consejos
Puede usar los números de versión de la manera que describe, simplemente cambiando los números en el archivo AssemblyInfo a medida que crea nuevas versiones, pero es mejor cuando está vinculado a un sistema de control de código fuente. Utilizamos los proyectos CrusieControl.NET y Web Deployment para establecer el número de versión, pero estoy seguro de que otros tendrán otras sugerencias.
También 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 está ejecutando en modo de depuración antes de compilar, mostrará 0.0.0.0, pero puede verificar esto y mostrar " Desarrollo " o algo así para mostrarte que se está ejecutando localmente (no es que no lo sepas, pero si alguna vez ves 0.0.0.0, sabes que algo está mal.
Espero que ayude
No es una mala idea. La solución para obtener la versión DLL de su aplicación web ASP.NET es simple:
VB.NET
My.Application.Info.Version (VB.NET)
C #
Obtenga 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.
Automatizamos el versionado 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 subversion 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 se implementa actualmente en los servidores web.
Dado un Ensamblaje a, utilice un .GetName (). Version.ToString () para obtener la versión en código.
GetName devuelve un AssemblyName .
La versión devuelve la versión especificada en su archivo AssemblyInfo.