不允许循环文件引用

Pro*_*m.X 18 msbuild aspnet-compiler visual-studio-2008

我在VS2008中构建解决方案时遇到问题.通常,它在环境中编译良好.有时,它失败了:

/xxx_WEB/secure/CMSManagedTargetPage.aspx(1): error ASPPARSE: Circular
file references are not allowed.
Run Code Online (Sandbox Code Playgroud)

我重建,它工作正常.

然而,现在,我正在设置CruiseControl.NET系统,并在将构建集成到CC之前使用MSBuild测试我检出的代码.现在,每次我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.
Run Code Online (Sandbox Code Playgroud)

问题是,我看不出这个引用的位置.

  • 我已经在整个解决方案中搜索了引用,并且除了在页面或其代码隐藏之外的任何地方或者在字符串中,都没有引用页面本身(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";

我的汇编参考也很好(据我所知).我的Web应用程序位于依赖项的"顶部",没有任何引用它,因此错误页面因此不能导致循环引用.当然,页面本身可能会在同一个程序集/网站中引用诸如UserControl之类的内容,但如前所述,对CMSManagedTargetPage的搜索没有产生任何结果,因此不会发生这种情况.

更改web.config中的批处理属性对MSBuild没有影响.

我觉得奇怪的是它"有时"在VS中失败并且总是在MSBuild中失败.我错过了一些微妙之处吗?

Joi*_*ike 14

转发自:

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

如果你有以下设置:/ folder1/Control1.ascx> References Control2 /folder2/Control2.ascx> References Control3 /folder1/Control3.ascx这意味着folder1 dll将引用folder2 dll,它将再次引用folder1 dll,导致"循环文件引用".


这帮我今天出去了; 我在根目录中有一个主页面引用了一个文件夹中的母版页,该文件夹引用了根目录中的不同页面.洗牌哪些页面在哪些文件夹中起作用就像魅力一样.


JBi*_*ord 8

当我遇到同样的问题时,我遇到了你的帖子.循环引用问题可能有一百万个解决方案,但我的是Master Pages的直接结果.

我不小心在嵌套文件夹外使用嵌套母版页创建了一个页面.例:

Master1.Master
Page.aspx
(Folder1) 
Master2.Master
Run Code Online (Sandbox Code Playgroud)

当Page.aspx引用Master2.Master作为其主页时,它会正常构建,并在我"发布"时出错.


小智 8

我也遇到了这个问题,能够通过选择"使用固定命名和单页程序集"从Visual Studio中获得成功的发布.由于某种原因,似乎避免了比较复杂的思想,因此有一个循环的参考.


Jim*_*rts 5

我发现当 Visual Studio 批量编译页面时出现此错误。我可以通过在 web.config 中的编译元素上设置 batch="false" 来解决此问题。

更具体地说,我在存在问题的页面的目录中添加了 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>
Run Code Online (Sandbox Code Playgroud)

这样,如果需要,Visual Studio/MSBuild 仍然可以批量编译其他不受影响的目录。

有关编译元素和批处理属性的更多信息,请访问msdn


Nex*_*s23 5

我有类似的问题,并从@ JBicford的答案得到了一个密切的线索.我在另一个文件夹中使用Master.master在网站的根目录上使用Default.aspx.不知道是否会导致这种情况,尚未测试此解决方案.

但是对于有兴趣解决发布问题的人来说,下面的选项适用于VS 2012,所有其他选项都因为对其他文件夹和页面的不正确依赖而失败.

在此输入图像描述