Precompilar el portal Dotnetnuke 4.4.1

La verdad es que las últimas versiones de Dotnetnuke basadas en ASP.NET 2.0 estan muy logradas pero vamos a explicar como acelerar un poquito más la carga nuestro portal Dotnetnuke precompilando la aplicación.
En mi caso he elegido la versión 4.4.1 de Dotnetnuke que corre sobre ASP.Net 2.0.

Cuando nos bajamos la versión de instalación de Dotnetnuke “DotNetNuke 4.4.1 Install” esta viene lista para realizar una compilación predeterminada lo que significa que el motor en tiempo de ejecución de ASP.NET compilará la aplicación Web la primera vez que un explorador Web solicite una página en la aplicación lo que puede causar unos pequeños retrasos cuando se solicita por primera vez el sitio Web.

Con ASP.NET 2.0 podemos precompilar el sitio web reduciendo el tiempo de respuesta a la primera solicitud desde el sitio Web a lo que se le llama Compilación en Contexto.

Para precompilar un sitio web en ASP.NET 2.0 podemos hacerlo de dos maneras:

a) Usar el commando asp_netcompiler.

Arrancamos la consola de comandos de Visual Studio 2005 y escribimos

  1.     aspnet_compiler -v /<nombre> <localización>
  2.  
  3.     aspnet_compiler -v /dnn c:dnn_precompile</localización></nombre>

b) Desde Visual Studio en la opción Generar->Publicar Sitio Web.
Mi sorpresa ha sido que al realizar la precompilación y probar el portal no funciona correctamente mostrando un error que dice que no puede encontrar los archivos de recursos (.resx).
El problema está en que DNN usa los directorios App_LocalResources y App_GlobalResources para la localización, siendo esas carpetas utilizadas por ASP.NET 2.0.

Para solucionar esto podemos hacer lo siguiente:

1. Descargar el código fuente de Dotnetnuke “Dotnetnuke 4.4.1 Source”. (Hay que registrarse para poder descargarla)dnnprecompile1.jpg

2. Abrir la solución con Visual Sutudio 2005 y localizar el fichero localization.vb dentro del proyecto “DotnetNuke.Library”
Ahora cambiamos los valores de las constantes LocalResourceDirectory y ApplicationResourceDirectory que indican los nombres de directorios en los que se encuentran los archivos de idiomas.

3. Compilamos la solución de nuevo para que genere los ensamblados actualizados.

4. Ahora tenemos que renombrar los directorios App_GlobalResources y App_LocalResources por Dnn_GlobalResources and Dnn_LocalResources de nuestra applicación Dotnetnuke.dnnprecompile2.jpg
Estas carpetas se encuentran en el raiz del sitio, bajo admin , bajo controls , y dentro de los directorios de los controles bajo Desktopmodules.
Yo he utilizado Better File Rename para renombrar los ficheros masivamente.

5. Ahora tenemos que copiar las .dll generadas en en el paso 3 que están en la ubicación DotNetNuke_4.4.1_Source\Website\bindnnprecompile3.jpg
al directorio \bin de tu portal dotnetnuke.

6. Pues bien , ahora podemos usar la herramienta de precompilación “asp_netcompiler” o Visual Studio 2005 y comprobar el sito web. Debería funcionarte.

Nota: Por cierto, yo tengo instalado el módulo del foro y al precompilar he tenido que copiar los ensamblados del módulo “Gallery” también en el directorio \bin aún no
teniendo instalado este módulo ya que el foro tiene un sistema para integrar la galeria de fotos.

Comenta en tu muro de Facebook