martes, 13 de diciembre de 2011

Sitios precompilados y archivos de informes RDLC

Sintomas:
Publicas un sitio web precompilado siguiendo mis instrucciones en:
 Precompilar en vs2010 para agilizar un sitio ASP.NET
Desgraciadamente tienes errores al ir a cargar informes en formato RDLC.
Solución: 
El problema es que el compilador compila tambien los informes y no los copia al sitio web. Copia una marcador ficticio en su lugar.

Puedes copiar los archivos RDLC manualmente o definir una accion postcompilación, pero una solución mas elegante es buscar en el web.config la sección que fuerza la compilación de los archivos con extensión rdlc:

<buildProviders>
<add extension=".rdlc" type="Microsoft.Reporting.RdlBuildProvider, Microsoft.ReportViewer.Common, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</buildProviders>


Y añadir una linea al final que quite la extensión: <remove extension=".rdlc"></remove>
La cosa quedara así:
<buildProviders>
<add extension=".rdlc" type="Microsoft.Reporting.RdlBuildProvider, Microsoft.ReportViewer.Common, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<remove extension=".rdlc"></remove>
</buildProviders>

Por supuesto podriamos borrar la sección Add pero VisualStudio 2010 nos lo volveria añadir en cuanto hicieramos algo con los informes.

Fuente de la solución: http://connect.microsoft.com/VisualStudio/feedback/details/468068/rdlc-files-are-build-into-resources-during-publish-this-is-a-marker-file



Precompilar en vs2010 para agilizar un sitio ASP.NET

Enunciado:
Has trabajado largo y tendido para conseguir un buen sitio web. Líneas y líneas de código.
Pero cada vez que accedes a tú sitio este carga muy lento la prímera página, a partir de entonces y hasta el día siguiente funciona rápido.
Crees que esto te está robando usuarios. y buscas soluciones.
El problema es que los sitios tienen que reciclarse periodicamente, y entonces tu sitio se vuelve a compilar.
En versiones anteriores de visual Studio se podia establecer la opción para no compilar, desmarcando la casilla "permitir que este sitio precompilado sea actualizable". Pero ahora no la encuentras.
Solución:
Descarga Visual Studio® 2010 Web Deployment Projects
Haz clic derecho en el proyecto web que quieres publicar y añade un Web  Deployment Proyect
Te crea un proyecto en la solución cuyas propiedades contienen las opciones que necesitas.
Concretamente: Allow this precompiled site to be updatable que debes dejar SIN MARCAR
Cuando generas este proyecto el resultado te lo vuelca en Output Folder que puede ser  una carpeta virtualizada en tu IIS.
¡y carga rápido!
Si usas archivos RDLC puedes tener problemas lee mi siguiente post sobre este téma.