La creación de ASP.NET proyecto en Visual Studio genera el mensaje de error del compilador CS0433

Versión original del producto:   Visual C++
Número KB original:   2028526

Resumen

Al compilar un ASP.NET proyecto mediante Microsoft Visual Studio, es posible que vea aleatoriamente un mensaje de error como el siguiente:

Mensaje de error del compilador: CS0433: el tipo 'ASP.summary_common_controls_notes_ascx' existe 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\Temporary ASP.NET Files\Book_Details\abc12345\def8910\App_Web_msfty456.dll'

Descripción: se produjo un error durante la compilación de un recurso necesario para dar servicio a esta solicitud. Revise los siguientes detalles de error específicos y modifique el código fuente correctamente.

Error de origen: Línea 100: </div>

Línea 101: <h3 class="entry"> Notas nuevas</h3>

Línea 102: <bni:details id="details" runat="server" />

Línea 103: <span class="RedZone"> 1450</span>

Línea 104: <p> Resumen.</p>

Archivo de origen: d:\http\post\publisher\default.aspx Line: 102

Los escenarios comunes en los que se puede producir este error se de abordan en las secciones siguientes.

Escenario 1: Dos ensamblados en la misma carpeta bin

Descripción: Una causa común de este error 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 ocurrir si se compiló más de un default.aspx en un único ensamblado. Normalmente, 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 Predeterminado en la mayoría de los casos) y vuelva a _ generar el proyecto. Es importante resolver cualquier conflicto de nomenclatura entre clases.

Escenario 2: Varias referencias al mismo ensamblado

Descripción: Las rutas de acceso de Visual Studio se usan para especificar la ruta de acceso de carpeta para las referencias de ensamblado usadas por el proyecto. Es posible que la ruta de acceso contenga un ensamblado y que el ensamblado contenga el mismo nombre de clase. Puede que haya varias referencias agregadas al mismo ensamblado (posiblemente distintas en la versión o el nombre) lo que provoca un conflicto de nomenclatura.

Solución: Quite la referencia de la versión anterior. En Visual Studio, haga clic con el botón secundario en el sitio web y compruebe las referencias en las propiedades.

Escenario 3: Cambios en los permisos predeterminados

Descripción: De forma predeterminada, cuando se ASP.NET una aplicación web, el código compilado se coloca en la carpeta Archivos ASP.NET temporales. De forma predeterminada, los permisos de acceso se conceden a ASP.NET cuenta de usuario local. La cuenta tiene los permisos de elevada confianza necesarios para tener acceso al código compilado. Es posible que haya algunos cambios en los permisos predeterminados y que los cambios causen conflictos de control de versiones. Otra posibilidad es que el software antivirus pueda bloquear un ensamblado sin darse cuenta.

Solución: Borre la carpeta ASP.NET archivos temporales de todo el contenido.

Escenario 4: compilación por lotes

Descripción: Cuando el atributo por lotes del archivo web.config se establece en True, elimina el retraso causado por la compilación necesaria al tener acceso a un archivo por primera vez. ASP.NET compila previamente todos los archivos no compilados en un modo por lotes. Este modo por lotes provoca retrasos la primera vez que se compilan los archivos.

Establecer el atributo por lotes en False puede exponer los errores de compilación enmascarados que existen en la aplicación, pero no se notifican. Lo que es más importante, indica a ASP.NET que compilen dinámicamente archivos .aspx/.ascx individuales en ensamblados independientes, en lugar de en un único ensamblado.

Solución: Establezca batch=False en la <compilation> sección de web.config. Esta acción debe considerarse una solución temporal. Batch=False en la sección de compilación tiene un impacto significativo en el rendimiento en los tiempos de compilación de la aplicación en Visual Studio.

Escenario 5: La edición de web.config reinicia AppDomain

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 se producen estas acciones, se pierde todo el estado de sesión y los elementos almacenados en caché se quitan de la memoria caché a medida que se reinicia el sitio web. El problema puede deberse a un estado incoherente en la aplicación web.

Solución: Desencadena un reinicio de AppDomain tocando (editando) el web.config archivo.

Escenario 6: Código fuente modificado que aún no se recompiló dinámicamente

Descripción: Puede almacenar código fuente en la carpeta App_Code y el código se compilará automáticamente en tiempo de ejecución. El ensamblado resultante es accesible para cualquier otro código de la aplicación web. Por lo App_Code carpeta funciona de forma muy parecido a la carpeta Bin, excepto que puede almacenar código fuente en ella en lugar de código compilado. La clase se volverá a compilar cuando haya un cambio en el archivo de origen. Si hay un conflicto debido a un ensamblado obsoleto, forzar una recompilación puede resolver el problema.

Solución: Toca un archivo de la bandeja o App_Code carpetas para desencadenar una recompilación completa.