ASP.Net: Incrementa y muestra la última versión de tu sitio web

Es interesante mostrar en la parte inferior de su sitio web, una versión como: v.1.10.2

¿Por qué mostrar una versión en la parte inferior de mi sitio?

Si utiliza en sus desarrollos varios entornos, no sabe si la versión de DEV es la última versión, si la versión STAGING (QA) es la versión anterior y si en PRODUCTION tenemos la misma versión que en STAGING (QA), por lo tanto, es útil mostrar en el pie de página la última versión de su sitio.

¿Cómo hacerlo?

Solo necesita un proyecto MVC ASP.Net, por ejemplo, agregar al final de la página _layout.cshtml (normalmente en /Views/Shared:_layout.cshtml) esto:

<footer>
    <span>Copyright &copy; [MiSitio] 2019 - <!-- version -->v1.0.0.0<!-- version --> </span>
</footer>

He agregado esto en mi pie de página:

<!-- version -->v1.0.0.0<!-- version -->

Luego, debe crear un archivo VBscript llamado "ScriptChangeVersion.vbs" en la raíz de su solución ASP.Net con el siguiente código:

'*** BY Dado 08/05/2019
'*** Cambia automáticamente una cadena en un archivo .aspx o .ascx o .cshtml en cada compilación a través de Visual Studio

'Toma uno o más argumentos
'Normalmente debemos tener al menos un argumento, la ruta del script actual
'Visual Studio no proporciona por defecto el Directorio Actual: File.GetAbsolutePathName(".") devuelve cadena vacía
Set oArgs=WScript.Arguments

'Instancia objeto Regex para la línea
Set regex = new RegExp
regex.Pattern = "<!-- date -->[^<]+<!-- date -->"
regex.IgnoreCase = true
regex.Global = true

'Instancia objeto Regex para la versión
Set regexVersion = new RegExp
regexVersion.Pattern = "<!-- version -->v?\.?([\d]*)\.?([\d]*)\.?([\d]*)\.?([\d]*)<!-- version -->"
regexVersion.IgnoreCase = true
regexVersion.Global = true

'Este es el archivo temporal para trabajar en él
tmpFile = "c:\windows\temp\tempFooter.txt"

'Instancia Objeto
Set Shell = CreateObject("WScript.Shell")
Set File = CreateObject("Scripting.FileSystemObject")

'Si ejecuta este script manualmente, puede recuperar la ruta, pero no a través de Visual Studio
'currentDirectory = File.GetAbsolutePathName(".")

'Obtiene el archivo
fileName = oArgs(0) & "Views\Shared\_Layout.cshtml"

'Abrir este archivo y crear uno nuevo
Set CurrentFile = File.OpenTextFile(fileName)
Set OutputFile = File.CreateTextFile(tmpFile,True)
If Not File.FileExists(fileName) Then
Wscript.Echo "Este archivo no se encuentra: " & fileName
Return
Else
Wscript.Echo "Archivo encontrado: " & fileName
End If
'Analiza cada línea
Do Until CurrentFile.AtEndOfStream
    'Leer la línea
    strLine = CurrentFile.ReadLine
    'Verificar si RegEx encontró el patrón
    If regex.Test(strLine) Then
        'Cambiar la línea
    	strLine = regex.Replace(strLine, "<!-- date -->(" & Right("0" & Day(Now), 2) & "/"& Right("0" & Month(Now), 2) & "/" & Year(Now)& " "& Right("0" & Hour(Now), 2) & ":"& Right("0" & Minute(Now),2) & ")<!-- date -->")
        'Cambiar la versión
    End If

	If regexVersion.Test(strLine) Then
            'Cambiar versión
            version = regexVersion.Execute(strLine)(0).SubMatches(0) '[v.1.0.3]
			WScript.Echo "versión encontrada: " & version
            maxNumber = regexVersion.Execute(strLine)(0).SubMatches(1)
			WScript.Echo "maxNumber encontrado: " & maxNumber
			mediumNumber = regexVersion.Execute(strLine)(0).SubMatches(2)
			WScript.Echo "mediumNumber encontrado: " & mediumNumber
			minorNumber = regexVersion.Execute(strLine)(0).SubMatches(3)
			WScript.Echo "minorNumber encontrado: " & minorNumber

			If version = "" Then
				version = 1
			End If
			If maxNumber = "" Then
				maxNumber = 0
			End If
			If mediumNumber = "" Then
				mediumNumber = 0
			End If
			If minorNumber = "" Then
				minorNumber = 0
			End If

			minorNumber = minorNumber + 1
			if minorNumber = 100 Then
				minorNumber = 0
				mediumNumber = mediumNumber + 1
				if mediumNumber = 100 Then
					mediumNumber = 0
					maxNumber = maxNumber + 1
					If maxNumber = 100 Then
						maxNumber = 0
						version = version + 1
					End if
				End If
			End If

			newVersion = "<!-- version -->v." & version & "." & maxNumber & "." & mediumNumber & "." & minorNumber & "<!-- version -->"
			WScript.Echo "Cambiar versión a: " & newVersion
			strLine = regexVersion.Replace(strLine, newVersion)

        End If
    'Escribir la línea
    'WScript.Echo strLine
    OutputFile.Write(strLine & vbCrLf)
Loop
'Cierra todo
OutputFile.Close
CurrentFile.Close

'Eliminar el archivo original
File.DeleteFile(fileName)
'Renombrar el archivo temporal
File.MoveFile tmpFile,fileName

'OBTENER permiso de Control Total en este archivo
Shell.Run "cacls " & fileName & " /E /T /C /G ""Everyone"":F ", 2, True

Este script, una vez ejecutado, cargará la página _layout.cshtml, buscará dónde se encuentra la versión indicada entre las etiquetas <!-- version --> y ¡guardará todo!

Para automatizar todo esto ahora, debe crear un evento POST BUILD en su solución ASP.Net (después de la compilación de su solución) así:

Coloque la siguiente línea:

if "$(ConfigurationName)" == "Debug" cscript /nologo $(SolutionDir)ScriptChangeVersion.vbs "$(ProjectDir)"

Cada vez que realice un build de su solución en modo DEBUG, el script .vbs se ejecutará y cambiará la versión de su página en el pie de página.

Su versión se incrementará automáticamente, así:

v1.0.0.0
v1.0.0.1
v1.0.0.2
...
v1.0.0.99
v1.0.1.0
v1.0.1.1
...
v1.0.99.99
v1.1.0.0
...
v1.99.99.99
v2.0.0.0

¡Aquí está! Ahora le toca a usted hacer algunos cambios en el script si lo desea.

También he agregado en el script la posibilidad de poner la fecha del build, solo necesita agregar las etiquetas <!-- date -->  ... <!-- date --> en algún lugar de su página.

Aucun commentaire pour le moment.

Une erreur s'est produite. Cette application peut ne plus répondre jusqu'à ce qu'elle soit rechargée.Veuillez contacter l'auteur. Reload 🗙