Referencia: https://support.microsoft.com/en-in/help/2028526/building-an-asp-net-project-in-visual-studio-results-in-compiler-error
Al crear un proyecto ASP.NET con Visual Studio, es posible que vea un mensaje de error similar al siguiente al azar:
Mensaje de error del compilador: CS0433: El tipo 'ASP.summary_common_controls_notes_ascx' existe tanto en 'c: \ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727 \ Temporary ASP.NET Files \ Book_Details \ abc12345 \ def8910 \ App_Web_msftx123.dll' y ' c: \ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727 \ Archivos temporales ASP.NET \ Book_Details \ abc12345 \ def8910 \ App_Web_msfty456.dll '
Descripción: se produjo un error durante la compilación de un recurso necesario para atender esta solicitud. Revise los siguientes detalles específicos del error y modifique su código fuente de manera apropiada.
Error de origen: Línea 100: Línea 101:
Notas nuevas Línea 102:
Línea 103:
1450 Línea 104:
Resumen.
Archivo de origen: d: \ http \ post \ publisher \ default.aspx Línea: 102
Los escenarios comunes donde puede ocurrir este error se analizan a continuación.
escenario 1
Descripción: una causa común es cuando hay dos ensamblados en la misma carpeta bin de la aplicación web que contienen dos definiciones de clase pero que tienen el mismo nombre de clase. Esto puede suceder si se compiló más de un Default.aspx en un solo ensamblado. Por lo general, esto ocurre cuando la página maestra (Default.master) y la página ASPX predeterminada (Default.aspx) declaran una clase _Default. Solución: cambie el nombre de clase de la página maestra (de _Default en la mayoría de los casos) y reconstruya el proyecto. Es importante resolver cualquier conflicto de nombres entre clases.
Escenario 2
Descripción: Las rutas de referencia en Visual Studio se utilizan para especificar la ruta de la carpeta para las referencias de ensamblado utilizadas por el proyecto. Es posible que la ruta contenga un ensamblado que contenga el mismo nombre de clase. Puede ser que se agreguen varias referencias al mismo ensamblado (posiblemente una versión o nombre diferente) que provoquen un conflicto de nombres.
Solución: elimine la referencia de la versión anterior. Para hacerlo, en Visual Studio, haga clic con el botón derecho en su sitio web y marque las "Referencias" en las propiedades.
Escenario 3
Descripción: De forma predeterminada, cuando se compila una aplicación web ASP.NET, el código compilado se coloca en la carpeta Archivos temporales de ASP.NET. De forma predeterminada, los permisos de acceso se otorgan a la cuenta de usuario local de ASP.NET, que tiene los permisos de alta confianza necesarios para acceder al código compilado. Es posible que haya algunos cambios en los permisos predeterminados que causen conflictos de versiones. Otra posibilidad sería que el software antivirus estuviera bloqueando un ensamblaje sin darse cuenta. Solución: borre todo el contenido de la carpeta de archivos temporales de ASP.NET.
Escenario 4
Descripción: cuando el atributo de lote en web.config se establece en True, elimina el retraso causado por la compilación requerida cuando accede a un archivo por primera vez. ASP.NET precompila todos los archivos no compilados en modo por lotes, lo que provoca retrasos la primera vez que se compilan los archivos. Desactivar la compilación por lotes puede exponer errores de compilación enmascarados que pueden existir en la aplicación pero que no se informan. Sin embargo, lo que es más importante para este problema, le dice a ASP.NET que compile dinámicamente archivos .aspx / .ascx individuales en ensamblajes separados en lugar de en un solo ensamblaje. Solución: establezca batch = false en la sección de web.config. Esto debe considerarse una solución temporal, ya que establecer batch = false en la sección de compilación tiene un impacto significativo en el rendimiento de los tiempos de compilación de la aplicación en Visual Studio.
Escenario 5
Descripción: la modificación del archivo web.config para una aplicación ASP.NET o el cambio de un archivo en la carpeta bin (como agregar, eliminar o cambiar el nombre) hace que AppDomain se reinicie. Cuando esto ocurre, todo el estado de la sesión se pierde y los elementos almacenados en caché se eliminan del caché cuando se reinicia el sitio web. Es posible que el problema sea causado por un estado inconsistente en la aplicación web. Solución: active un reinicio de AppDomain tocando (editando) el archivo web.config.
Escenario 6
Descripción: Puede almacenar el código fuente en la carpeta App_Code y se compilará automáticamente en tiempo de ejecución. El ensamblado resultante es accesible para cualquier otro código en la aplicación web. Por lo tanto, la carpeta App_Code funciona de manera muy similar a la carpeta Bin, excepto que puede almacenar el código fuente en ella en lugar del código compilado. La clase se volverá a compilar cuando haya un cambio en el archivo fuente. Si hay un conflicto debido a un ensamblado desactualizado, forzar una recompilación puede resolver el problema. Solución: toque un archivo en las carpetas Bin o App_Code para activar una recompilación completa.