visual tag studio espaƱol div code closing brackethighlighter visual-studio-2008 msbuild aspnet-compiler

visual studio 2008 - tag - Referencias de archivos circulares no permitidas



visual studio code highlight closing tag (16)

Así que parece que las MasterPages están causando más problemas con ASP.NET 2.0. He tenido problemas con ellos antes, y ahora parece ser el mismo.

Creé una nueva página, sin MasterPage y funcionó bien. La MasterPage se usa literalmente solo para el estilo. Vergüenza.

Estoy teniendo un problema en la construcción de mi solución en VS2008. Normalmente, compila bien en el ambiente. A veces, falla con:

/xxx_WEB/secure/CMSManagedTargetPage.aspx(1): error ASPPARSE: Circular file references are not allowed.

Reconstruyo y funciona bien.

Ahora, sin embargo, estoy en el medio de configurar un sistema CruiseControl.NET y estoy probando mi código desprotegido con MSBuild antes de integrar la compilación en CC. Ahora, cada vez que MSBuild, obtengo:

"Q:/cc/xxx/checked out from svn/xxx.sln" (default target) (1) -> (xxx_WEB target) -> /xxx_WEB/secure/CMSManagedTargetPage.aspx(1): error ASPPARSE: Circular file references are not allowed.

El problema es que no puedo ver dónde está esta referencia.

  • He buscado la referencia en toda la solución y no puedo encontrar referencias a la página en sí (CMSManagedTargetPage) en ningún otro lugar que no sea en la página o en su código, o dentro de una cadena, por ejemplo:

    C: / dev2008 / xxx / IWW.xxx.ASPNET / AspxHttpHandler.cs (82): inputFile = context.Server.MapPath ("~ / secure / CMSManagedTargetPage.aspx"); C: / dev2008 / xxx / IWW.xxx.ASPNET / AspxHttpHandler.cs (83): virtualPath = "~ / secure / CMSManagedTargetPage.aspx";

Mis referencias de montaje también están bien (que yo sepa). Mi aplicación web está en la "parte superior" de las dependencias, y nada hace referencia a ella y, por lo tanto, la página de fallas no puede causar una referencia circular. Por supuesto, la página en sí puede hacer referencia a algo como un UserControl dentro del mismo ensamblaje / sitio web, pero como se mencionó anteriormente, una búsqueda en CMSManagedTargetPage no produjo resultados, por lo que esto no está sucediendo.

Cambiar el atributo de lote en web.config no tuvo efecto en MSBuild.

Me parece muy extraño que "a veces" falle en VS y siempre falle en MSBuild. ¿Me falta algo de sutileza?


En la mayoría de los casos, esto ocurre después de copiar páginas aspx. Asegúrese de que su clase declarada como Inherits="MyPage" no se repita en todo el sitio.


En realidad, esta publicación explica por qué sucede y cómo solucionarlo: http://www.gitshah.com/2011/04/how-to-fix-circular-file-references-are.html

Cómo corregir el error "Las referencias de archivos circulares no están permitidas" en ASP.Net

En uno de mis proyectos .Net, encontré un tema interesante. Perdí un par de horas reparándolo. Por lo tanto, decidí compartir mis conclusiones, para que otros no tengan que perder el tiempo arreglando el mismo problema.

La cuestión

El problema era bastante simple, la aplicación no se construiría. El error que estaba obteniendo al crear un proyecto web ASP.Net utilizando MSBuild fue: /someProject/Controls/A/ucA.ascx(2): error ASPPARSE: no se permiten referencias de archivos circulares.

Por supuesto, el error dice que hay algún tipo de referencia circular en mi código. Miré a mi alrededor para verificar y volver a verificar, si he creado una referencia circular por error. Sin embargo, si hubiera alguna referencia circular, el código no se compilaría. El código se estaba compilando bien pero estaba fallando cuando ejecutamos aspnet_compiler.exe.

La herramienta de compilación ASP.Net (aspnet_compiler.exe) le permite compilar una aplicación web ASP.Net, lo que ayuda al rendimiento de la aplicación porque los usuarios finales no experimentan un retraso en la primera solicitud a la aplicación.

Lo comprobé de nuevo, pero ciertamente no había una dependencia circular relacionada con el código, entonces ¿por qué aspnet_compiler.exe se quejaba de las referencias del archivo circular?

La explicación

Buscando un poco en Google, encontré que, de forma predeterminada, en un Proyecto de sitio web, ASP.Net crea una DLL por carpeta. Por lo tanto, si tiene la siguiente configuración:

El control de usuario ucA.ascx está presente en el directorio "A". ucA.ascx se refiere a otro control de usuario ucB.ascx El control de usuario ucB.ascx está presente en el directorio "B". ucB.ascx refiere a otro control de usuario ucC.ascx Control de usuario ucC.ascx está presente en el directorio "A".

La DLL de la carpeta A hará referencia a la DLL de la carpeta B, que volverá a hacer referencia a la DLL de la carpeta A, causando una "referencia de archivo circular".

Esta es la razón por la cual el aspnet_compiler.exe falla con el error de "referencia de archivo circular".

La solución

Hay dos maneras en que este problema podría ser solucionado

Reorganice los controles de usuario (o MasterPages) para eliminar las referencias circulares. Por lo general, esto significa mover los controles de usuario en directorios separados. En nuestro ejemplo, mover ucC.ascx a un nuevo directorio "C" (Solución preferida). Use batch = "false" en la etiqueta de compilación del archivo web.config. Esto hará que se cree una nueva DLL para cada control / página en el sitio. Esto debería solucionar el error, pero es muy malo para el rendimiento, por lo que debe evitarse.

Moví el ucC.ascx en un directorio diferente y sí, ¡el error desapareció!


Encontré que estaba recibiendo este error cuando se compilaron las páginas de Visual Studio por lotes. Pude solucionar este problema configurando batch = "false" en el elemento de compilación en web.config.

Para ser más específico, agregué un web.config en el directorio que tenía páginas con problemas. Ese archivo web.config solo tiene el siguiente contenido:

<?xml version="1.0"?> <configuration> <system.web> <!-- Added to prevent error ASPPARSE: Circular file references are not allowed. --> <compilation batch="false" /> </system.web> </configuration>

De esa manera, Visual Studio / MSBuild aún puede compilar por lotes los otros directorios no afectados, si así lo desea.

Más información sobre el elemento de compilación y el atributo de lote están disponibles en msdn .


Este error todavía existe en ASP.NET 4.0.

El error que obtuve fue:

/DirA/PageA.aspx(3): error ASPPARSE: Circular file references are not allowed. /DirA/PageA.aspx(71): error ASPPARSE: Unknown server tag ''Controls:ControlA''.

ControlA fue el mismo control al que se hace referencia en PageA.aspx (3). Descubrí que tenía que mover ControlA al mismo directorio que PageA para detener este error.


Experimento este comportamiento si tengo un control de usuario (ASCX) que se incluye dentro de una página maestra.

Por lo general, simplemente ignoro el error ya que desaparece después de la segunda compilación.


Me topé con tu publicación cuando me encontré con el mismo problema. Probablemente hay un millón de soluciones a un problema de referencia circular, pero el mío fue un resultado directo de las páginas maestras.

Accidentalmente creé una página usando una página maestra anidada, fuera de la carpeta anidada. Ejemplo:

Master1.Master Page.aspx (Folder1) Master2.Master

Mientras Page.aspx hacía referencia a Master2.Master como su página maestra, se compilaría normalmente y se produciría un error cuando "Publicara".


Mismo problema en algún código que he heredado.

Mi problema era que tenía un archivo en la carpeta app_data, pero tenía un espacio de nombres de MyControls. Terminé sacando ese archivo de la carpeta app_data y creé una nueva carpeta "mis controles".


Para aquellos de ustedes que como yo han estado dando vueltas y más vueltas con este tema. Creo que puedo tener otra solución, todo lo demás falla. Tuvimos este problema con una aplicación MVC y pasamos varias semanas intentando varias sugerencias sin éxito.

Lo que descubrimos fue que estamos ejecutando McAfee Virus Scanner V 8.0. descubrimos que cuando inhabilitamos el Escáner en acceso desde la Consola de VirusScan pudimos compilar y depurar sin problemas.

Lo único es que cuando esta configuración está deshabilitada, se volverá a habilitar automáticamente cada 15 minutos.

Sentí que valía la pena compartir esto.

Gracias decano

Editar: esto funciona solo si tiene acceso de administrador local a su máquina. Desde el punto de vista de la seguridad, existen inquietudes válidas sobre la desactivación de los escáneres AV (con razón). De hecho, si está en un entorno de trabajo controlado por un administrador de red, puede incluso rechazarlos. Estoy seguro de que hay otra forma de hacer esto, pero por ahora esto parece funcionar para nosotros, pero si encuentro otra solución (que es fácil de administrar en la red) compartiré aquí.


Para mí también estaba registrando la página aspx en la página maestra.

Por ejemplo (en la página principal):

<%@ Register Assembly="MyPage" Namespace="MyPage" TagPrefix="MyPage" %> ... <asp:ContentPlaceHolder id="MyPage" runat="server"></asp:ContentPlaceHolder>

Y luego en la página aspx:

<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="MyPage.aspx.cs" Inherits="MyPage" Title="Untitled Page" %> <asp:Content ID="SomeContent" ContentPlaceHolderID="MyPage" Runat="Server">

Eliminando el Registro lo arreglamos.


Para mi estos trucos no funcionaron

-setting batch = true -deleting asp.net Archivos temporales y reinicio de IIS -emplazando archivos ascx sospechosos

y el problema fue al hacer referencia a un proyecto agregado reciente a mi solución y descargarlo después de la compilación final. Y al eliminar la referencia a esta biblioteca recién agregada, se resolvió el problema


Reposición de:

http://ellisweb.net/2009/12/fixing-the-circular-file-references-are-not-allowed-error-in-asp-net/

Si tiene la siguiente configuración: /folder1/Control1.ascx> Referencias Control2 /folder2/Control2.ascx> Referencias Control3 /folder1/Control3.ascx Esto significa que la carpeta 1 dll hará referencia a la carpeta 2 dll que volverá a hacer referencia a la carpeta 1 dll, causando una "referencia de archivo circular".

Esto me ayudó hoy; Tenía una página maestra en la raíz que hacía referencia a una página maestra en una carpeta, que hacía referencia a una página diferente en la raíz. Barajando qué páginas estaban en qué carpetas funcionaron a la perfección.


También me encontré con este problema, pude obtener una publicación exitosa desde Visual Studio seleccionando "Usar conjuntos de nombres fijos y de una sola página". Por alguna razón, eso parece evitar el pensamiento de compilación, hay una referencia circular.


Tuve este mismo error durante una revisión importante del desarrollo. En mi caso particular, esto fue porque estaba usando una carpeta "JUNK" donde estaba arrastrando y soltando archivos no utilizados o renombrados. Se estaba compilando mi carpeta de correo no deseado y un archivo que eliminé recientemente estaba causando este problema.

Arreglé esto al excluir el archivo individual en mi carpeta de basura.


Tuve un problema similar, y obtuve una pista cercana de la respuesta de @ JBicford. Estaba usando Default.aspx en la raíz del sitio web usando Master.master en otra carpeta. No sé si eso puede causar eso, no he probado esta solución todavía.

Pero para alguien que esté interesado en resolver el problema de publicación, la opción de abajo funciona para VS 2012, todas las demás opciones fallan debido a dependencias incorrectas en otras carpetas y páginas.


Tuve este problema, pero ninguna de las sugerencias me funcionó, el mío puede ser un caso único, pero en caso de que otras personas encuentren el mismo problema:

Al parecer, el mío no tenía nada que ver con las Circular References y, de hecho, se debía a mi salida de compilación. Después de un tiempo de no llegar a ninguna parte, coloqué un punto de interrupción en el control que no se pudo cargar y recibí una notificación que me decía que no se vería afectado.

Al cambiar las propiedades del proyecto y los ajustes de configuración de la solución para compilar para Any CPU solucionó el problema.