Ссылки на циркулярные файлы не допускаются - PullRequest
18 голосов
/ 08 апреля 2009

У меня проблема с построением решения в VS2008. Обычно он прекрасно компилируется в среде. Иногда происходит сбой с:

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

Я перестраиваюсь и все работает нормально.

Однако сейчас я нахожусь в процессе настройки системы CruiseControl.NET и тестирую свой проверенный код с помощью MSBuild, прежде чем интегрировать сборку в CC. Теперь, каждый раз, когда я MSBuild, я получаю:

"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.

Проблема в том, что я не вижу, где эта ссылка.

  • Я искал ссылку по всему решению и не могу найти никаких ссылок на саму страницу (CMSManagedTargetPage) нигде, кроме как на странице или в ее коде, или внутри строки, например:

    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";

Мои ссылки на сборки также хороши (насколько я знаю). Мое веб-приложение находится на «вершине» зависимостей, и ничто не ссылается на него, и поэтому неисправная страница не может вызвать циклическую ссылку. Конечно, сама страница может ссылаться на что-то вроде UserControl в той же сборке / веб-сайте, но, как упоминалось ранее, поиск по CMSManagedTargetPage не дал результатов, поэтому этого не происходит.

Изменение атрибута пакета в web.config не повлияло на MSBuild.

Мне показалось очень странным, что «иногда» происходит сбой в VS и всегда происходит сбой в MSBuild. Мне не хватает какой-то тонкости?

Ответы [ 16 ]

13 голосов
/ 14 февраля 2011

перенесено с:

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

Если у вас есть следующие настройки: /folder1/Control1.ascx> Ссылки Control2 /folder2/Control2.ascx> Ссылки Control3 /folder1/Control3.ascx Это означает, что dll folder1 будет ссылаться на dll folder2, который снова будет ссылаться на dll folder1, вызывая «круговую ссылку на файл».


Это помогло мне сегодня; У меня была главная страница в корне, ссылающаяся на главную страницу в папке, которая ссылалась на другую страницу в корне. Перемешивание, какие страницы были, в каких папках работал как шарм.

8 голосов
/ 14 апреля 2010

Я также столкнулся с этой проблемой и смог успешно выполнить публикацию из Visual Studio, выбрав «Использовать фиксированные имена и одностраничные сборки». По некоторым причинам это, кажется, избегает мысли компилятора, что есть круговая ссылка.

8 голосов
/ 06 июня 2009

Я столкнулся с вашим постом, когда столкнулся с той же проблемой. Вероятно, существует миллион вариантов решения Циркулярной ссылки, но мое было прямым результатом Master Pages.

Я случайно создал страницу, используя вложенную главную страницу, вне вложенной папки. Пример:

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

Когда Page.aspx ссылался на Master2.Master в качестве главной страницы, он работал нормально и выдает ошибку при «публикации».

5 голосов
/ 19 марта 2013

У меня была похожая проблема, и я получил точную подсказку от ответа @ JBicford. Я использовал Default.aspx в корне сайта, используя Master.master в другой папке. Не знаю, может ли это быть причиной, еще не тестировали это решение.

Но для тех, кто заинтересован в решении проблемы с публикацией, для VS 2012 работает опция ниже, все остальные опции не работают из-за неправильной зависимости от других папок и страниц.

enter image description here

4 голосов
/ 04 января 2011

Я обнаружил, что получаю эту ошибку при пакетной компиляции страниц Visual Studio. Я смог решить эту проблему, установив batch = "false" в элементе компиляции в файле web.config.

Чтобы быть более точным, я добавил web.config в каталог, в котором были страницы с проблемами. Этот файл web.config имеет только следующее содержимое:

<?xml version="1.0"?>

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

Таким образом, Visual Studio / MSBuild по-прежнему может пакетно скомпилировать другие не затронутые каталоги, если это необходимо.

Более подробная информация об элементе компиляции и атрибуте пакета доступна в msdn .

3 голосов
/ 22 сентября 2009

Для меня это была также регистрация страницы aspx на главной странице.

Например (на главной странице):

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

А затем на странице 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">

Удаление реестра исправлено.

2 голосов
/ 20 октября 2014

Для тех из вас, кто, как я, ходил по кругу с этим вопросом. Я полагаю, что у меня может быть другое решение - все остальное терпит неудачу. У нас была эта проблема с приложением MVC, и мы потратили несколько недель, пытаясь различные предложения безрезультатно.

Мы обнаружили, что у нас запущен McAfee Virus Scanner V 8.0. мы обнаружили, что когда мы отключили сканер при доступе с консоли VirusScan, мы смогли собрать и отладить без проблем.

Единственное, что, если этот параметр отключен, он автоматически включается каждые 15 минут.

Я чувствовал, что этим стоит поделиться ..

Спасибо, Декан

Редактировать: Это работает, только если у вас есть локальный доступ администратора к вашему компьютеру. С точки зрения безопасности существуют серьезные опасения по поводу отключения AV-сканеров (это справедливо). На самом деле, если вы работаете в рабочей среде, контролируемой сетевым администратором, вы можете даже получить от них отпор. Я уверен, что есть другой способ сделать это, но сейчас это, кажется, работает для нас, но если я найду другой обходной путь (который является чистым для администратора), я поделюсь здесь.

1 голос
/ 14 октября 2013

У меня была эта проблема, но ни одно из предложений не сработало для меня, мое может быть уникальным случаем, но на случай, если другие люди столкнутся с той же проблемой:

Шахта, похоже, не имела ничего общего с Circular References и была на самом деле из-за моих результатов сборки. Через некоторое время, когда я никуда не попал, я установил контрольную точку на элемент управления, который не мог быть загружен, и получил уведомление о том, что он не будет активирован.

Изменение обоих параметров проекта и параметров конфигурации решения для построения для Any CPU устранило проблему.

1 голос
/ 27 августа 2010

Эта ошибка все еще существует в ASP.NET 4.0.

Я получил ошибку:

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

ControlA был тем же контролем, на который ссылается PageA.aspx (3). Я обнаружил, что мне пришлось переместить ControlA в тот же каталог, что и PageA, чтобы остановить эту ошибку.

1 голос
/ 30 июня 2010

Я испытываю это поведение, если у меня есть пользовательский элемент управления (ASCX), который включен в главную страницу.

Обычно я просто игнорирую ошибку, поскольку она исчезла после второй сборки.

...