2009-04-08 72 views
17

Tengo un problema para crear mi solución en VS2008. Normalmente, compila bien en el entorno. A veces, falla con:Referencias de archivos circulares no permitidas

/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 verificado con MSBuild antes de integrar la construcció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 la FNCA ind no hay referencias a la propia página (CMSManagedTargetPage) en cualquier lugar que no sea en la página o el código subyacente, 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";

Las referencias de mi conjunto también son buenas (hasta donde yo sé). Mi aplicación web está en la "parte superior" de las dependencias, y nada hace referencia a ella y, por lo tanto, a la página de fallas, por lo que no puede generar una referencia circular. Por supuesto, la página misma puede hacer referencia a algo como un UserControl dentro del mismo ensamblado/sitio web, pero como se mencionó anteriormente, una búsqueda en CMSManagedTargetPage no arrojó ningún resultado, por lo que esto no está sucediendo.

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

Me resulta muy extraño que "a veces" falla en VS y siempre falla en MSBuild. ¿Me estoy perdiendo algo de sutileza?

Respuesta

-7

Parece que las páginas maestras 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 página maestra se usa literalmente solo para el estilo. Vergüenza.

7

Me encontré con tu publicación cuando me encontré con el mismo problema. Probablemente haya un millón de soluciones para 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 se refería a Master2.Master como su masterpage, que construiría con normalidad, y el error cuando "Publicar".

3

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

Por ejemplo (en la página maestra):

<%@ 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"> 

Extracción del Registro arreglado.

8

También me encontré con este problema, fue capaz de obtener un éxito publicar desde dentro de Visual Studio por selectina la "utilización de nombres fija y asambleas de una sola página." Por alguna razón, parece evitar que el compilador piense que hay una referencia circular.

+0

Modo de empleo *** Usar nombres fijos ... *** en _targets_ msbuild o script de despliegue (powershell)? – Kiquenet

1

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

Por lo general simplemente ignorar el error, ya que se ha ido después de la segunda generación.

+2

Tuve el mismo problema. Ahora uso un en mi página maestra y en el código detrás de agregar el control programáticamente: phGoogleAnalyticsPageTracker.Controls.Add (Page.LoadControl (virtualPathToGoogleAnalyticsPageTrackerControl)); – mathijsuitmegen

1

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

El error que dieron 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 era el mismo control que se hace referencia en PageA.aspx (3). Descubrí que tenía que mover ControlA al mismo directorio que PageA para detener este error.

4

me pareció que estaba recibiendo este error al Estudio Visual lotes páginas compilado. Pude solucionar este problema configurando batch = "false" en el elemento de compilación en web.config.

Para ser más específicos, he añadido un web.config en el directorio que tenía páginas con problemas. Ese archivo web.config sólo 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 todavía puede compilar por lotes los otros directorios no afectados, si se desea.

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

12

publicado en de:

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

Si usted tiene la siguiente configuración: /folder1/Control1.ascx> Referencias Control2 /folder2/Control2.ascx> Referencias Control3 /carpeta1/Control3. ascx Esto significa que la carpeta1 dll hará referencia a la carpeta2 dll que nuevamente hará referencia a la carpeta1 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. Mezclar qué páginas estaban en qué carpetas funcionaba como un amuleto.

0

para mí estos trucos no funcionan

-setting lotes = true -deleting asp.Los archivos temporales netas y IIS restablecen -Sustitución de archivos sospechosos ascx

y el problema se hace referencia a partir de un proyecto reciente añadido a la solución y descargarlo después versión final .y se eliminara la referencia a esta biblioteca recién agregado resuelto el problema

0

Tuve este mismo error durante una revisión de desarrollo importante. En mi caso particular, esto fue porque estaba usando una carpeta "BASURA" donde estaba arrastrando y soltando archivos no utilizados o renombrados. Mi carpeta de basura estaba siendo compilada y un archivo que eliminé recientemente estaba causando este problema.

Lo solucioné excluyendo el archivo individual en mi carpeta de correo no deseado.

4

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, aún no he probado esta solución.

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

enter image description here

+0

En mi caso, eso era Default.aspx en la página raíz y maestra en una carpeta diferente. – Megrez7

0

mismo problema en algún código que heredé.

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

1

tuve este problema, pero ninguna de las sugerencias trabajado para mí, la mía puede haber un caso único, pero por si acaso otras personas encontrar el mismo problema:

mina aparentemente no tenía nada que ver con Circular References y fue de hecho debido a mi producción de compilación. Después de un tiempo de 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 informaba que no se golpearía.

cambiar tanto las propiedades del proyecto y valores de configuración de solución construir para Any CPU rectifica el problema.

+0

Si ejecuta msbuild en la línea de comandos agregando/p: Platform = "Any CPU" también funcionará para resolver este problema – MadManMonty

2

Para aquellos de ustedes que como yo hemos estado dando vueltas con este problema. 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 las diversas sugerencias sin éxito.

Lo que descubrimos fue que estamos ejecutando el escáner de McAfee Virus V 8.0. descubrimos que cuando desactivamos el Escáner en tiempo real desde la Consola de VirusScan, pudimos compilar y depurar sin problemas.

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

sentí que esta era la pena compartir ..

Gracias, Dean

Editar: esto sólo funciona si tiene acceso de administrador local a su máquina. Desde el punto de vista de la seguridad, existen preocupaciones válidas sobre apagar los escáneres AV (con razón). De hecho, si estás en un entorno de trabajo controlado por un administrador de red, es posible que incluso te rechacen.Estoy seguro de que hay otra manera de hacerlo, pero por ahora parece que esto funciona, pero si encuentro otra solución alternativa (que sea la de administración de red) la compartiré aquí.

+0

Gracias por compartir su sugerencia con respecto a los escáneres AV; durante los últimos días nos habíamos golpeado la cabeza contra la pared intentando resolver este problema, y ​​una vez que deshabilité el escaneo AV a pedido en tiempo real en nuestro servidor de compilación .NET de Cruise Control, este error de "referencias circulares" desapareció. – ssahmed555

0

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 repite en todo el sitio.

0

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

cómo solucionar el “referencias circulares de archivos no están permitidos” Error en ASP.Net

En una de mis proyectos de .Net, me encontré con un problema interesante. Perdí un par de horas arreglándolo. Por lo tanto, decidí compartir mis hallazgos, para que los demás no tengan que perder el tiempo arreglando el mismo problema.

La cuestión

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

Por supuesto, el error dice que hay algún tipo de referencia circular en mi código. Miré 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 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, esto ayuda al rendimiento de la aplicación porque los usuarios finales no encuentran un retraso en la primera solicitud a la aplicación.

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

La Explicación

googlear un poco, me encontré con que, por defecto, en un sitio web del proyecto, 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 Control de usuario ucB.ascx está presente en el directorio "B". ucB.ascx se 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 nuevamente hará referencia a la DLL de la carpeta A, causando una "referencia de archivo circular".

Este es el motivo por el que aspnet_compiler.exe falla con el error de "referencia de archivo circular".

El Fix

Hay dos formas de esta cuestión podría fijar

reorganizar los controles de usuario (o MasterPages) para eliminar las referencias circulares. Usualmente esto significa mover los controles del 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 causará que se cree una nueva DLL para cada control/página en el sitio. Esto debería corregir el error, pero es realmente pésimo para el rendimiento, por lo que debe evitarse.

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

Cuestiones relacionadas