El archivo ‘nombre assembly' no se ha precompilado y no se puede solicitar

Imaginemos que tenemos una aplicación completamente compilada y cuando vamos a ejecutarla nos aparece este error:

image

 

El error El archivo ‘xxxxx' no se ha precompilado y no se puede solicitar (o en inglés The file ‘xxxxx' has not been pre-compiled, and cannot be requested) lo que quiere decir es que ASP.NET esté compilada y no encuentra ese código compilado. Ya que se supone que la aplicación está compilada, no puede compilar parte sí y parte no y da el fallo.

Estos son los escenarios más comunes:

Aplicación que antes no se precompilaba y ahora sí

Síntomas

Antes no teníamos la necesidad de compilar la aplicación y ahora por algún motivo (rendimiento…) necesitamos que esté compilada. Hemos desmarcado la opción de “Allow this precompiled site to be updatable” y al publicar nos aparece este error.

Solución

Lo más seguro, es que estén conviviendo tanto los assemblies actualizables como los no actualizables.

Este es el aspecto de una página aspx que no es actualizable

This is a marker file generated by the precompilation tool, and should not be deleted!

Pese a que toda la página esté compilada y se encuentre en el assembly, el IIS necesita que exista físicamente la página que va a ser invocada. Por ello tenemos el ejemplo de una página que tan sólo tiene un contenido diciendo que no la borres para que el IIS pueda encontrar esa página y luego cargar el assembly.

Este es el aspecto típico de una página aspx actualizable:

<%@ page language="C#" autoeventwireup="true" inherits="NotCompiled, App_Web_0jtoczmu" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="https://www.w3.org/1999/xhtml">
….

</html>

Lo más probable es que tengamos páginas de la versión actualizable porque no hemos borrado todo el contenido antes de desplegar. Lo que deberíamos hacer es revisar que sólo tenemos páginas con el marcador y eliminar el resto

 

Una aplicación nueva en un sitio web con otras aplicaciones

Síntomas

Tenemos un Sitio Web con varias aplicaciones y ahora vamos a poner esta, que curiosamente es la primera que tiene la opción de no actualizable.

Solución

Debemos revisar que la aplicación nueva tiene su propio Application Domain, por lo que debemos revisar que estña configurada como una aplicación independiente dentro del IIS

  1.  

Podemos ver que son errores relativamente fáciles de cometer y aún más fáciles de solucionar.

 

Espero que os sirva de ayuda

- José Ortega Gutiérrez