Problema:
Cuando uno tiene un sitio web construido bajo el CMS Dot Net Nuke (DNN para los amigos) surge el problema de que no se generan, al publicar, ni la carpeta App_GlobalResources ni tampoco dll's que la reemplacen. Por lo tanto, todos los datos que deben ser obtenidos a partir de archivos que se encuentran en dicha carpeta no serán hallados a la hora de copiar el código precompilado en el ambiente de producción, lo que provocará que nuestro sitio Web no funcione correctamente en dicho ambiente.Ante este problema varios foros proponen la misma solución que, aunque no del todo limpia, ha demostrado en nuestra experiencia ser al menos efectiva.
Uno de los foros a los que se refiere el párrafo anterior es éste:
http://www.dotnetnuke.com/Resources/Forums/forumid/108/postid/190853/scope/posts.aspx
Solución:
Síntesis:
Lo que se debe hacer es copiar la carpeta App_GlobalResources desde nuestro código fuente a la raíz del sitio en nuestro ambiente de producción. Luego renombrar dicha carpeta a AppGlobalResources, y por último sólo queda modificar una línea del archivo Localization.vb que forma parte del código fuente de DNN, suprimiendo la referencia en dicha clase a App_GlobalResources y poniendo en su lugar una referencia al nuevo nombre de nuestra carpeta, es decir, AppGlobalResources.
A continuación se deja una descripción de la solución paso a paso.
Detalle:
1. Antes que nada debemos averiguar exactamente con qué versión de DNN estamos trabajando.
Esta información puede obtenerse navegando el sitio logueado como superadministrador, yendo a Host -> Host Settings, como muestra la siguiente imagen:
2. En caso de no contar con el código fuente de Dot Net Nuke inlcuido junto con el código fuente de nuetro sitio, deberemos bajarlo del siguiente sitio:
http://dotnetnuke.codeplex.com/releases/view/63026
En nuestro caso particular, como la versión con la que trabajamos fue la 5.5.0, descargamos el código de un enlace que se encuentra en la siguiente página:
http://dotnetnuke.codeplex.com/releases/view/50755
3. Descomprimimos el archivo bajado, que tendrá un nombre similar al siguiente:
DotNetNuke_Community_05.05.00_Source.zip
4. Abrimos la solución en algún Visual Studio.
5. Localizamos el archivo Localization.vb. En nuestro caso se encuentra en DNN\Library\Services\Localization\Localization.vb y es probable que siga estando allí a futuro.
6. Modificamos la línea qua hace referencia a la carpeta App_GlobalResources y la cambiamos por una referencia a AppGlobalResources (si recordamos, el nuevo nombre con el que renombramos la carpeta). En la figura de arrriba este paso ya ha sido realizado, y se encuentra en las siguientes líneas:
Public Shared ReadOnly Property ApplicationResourceDirectory() As String
Get
Return "~/AppGlobalResources"
End Get
End Property
7. Guardamos el archivo de código fuente que acabamos de modificar.
8. Verificamos a dónde se va a generar el código precompilado. Para ello nos posicionamos sobre DotNetNuke.Library, que es el proyecto que tiene nuestro código modificado, y hacemos click derecho. Del menú emergente elegimos "Propiedades".
9. Vamos a la pestaña y nos fijamos cuál es la ruta de acceso para los resultados de la compilación. Allí se encontrarán las .dll's generadas que luego deberemos copiar.
10. Vamos al explorador de soluciones, nos posicionamos sobre la solución, hacemos clic derecho y presionamos "Generar solución".
11. Nos dirigimos al directorio \bin dentro de la raíz del sitio en el ambiente de producción y buscamos un archivo con el nombre DotNetNuke.dll. Lo cortamos y lo pegamos en algún otro lugar fuera del sitio (renombrarlo podría llegar a tener problemas). La idea de pegarlo en otro lado es mantener un respaldo de lo que teníamos antes, para acudir a él en caso de incendio.
12. Cuando la solución haya sido generada, nos vamos al directorio informado en el punto 9 y copiamos la dll que nos interesa, probablemente se llame: DotNetNuke.dll y va a ser el único archivo importante para nosostros entre todos los generados.
13. Copiamos dicha .dll dentro de la carpeta \bin que se encuentra en la raíz del sitio de producción. Este archivo reemplaza al que hemos cortado en el paso 11.
14. Si todo funciona bien, al acceder al sitio de producción debería presentarse la home y no tener ningún problema, y los inconvenientes generados por la ausencia de los archivos en la carpeta App_GlobalResources deberán haber desaparecido.
¡Espero que les haya servido!
Excelente compañera!
ResponderEliminares de gran ayuda gracias!!!
ResponderEliminar