The Artima Developer Community
Sponsored Link

.NET Buzz Forum
Circular File References and Other ASP.NET 2.0 / VS 2005 Conversion Issues

0 replies on 1 page.

Welcome Guest
  Sign In

Go back to the topic listing  Back to Topic List Click to reply to this topic  Reply to this Topic Click to search messages in this forum  Search Forum Click for a threaded view of the topic  Threaded View   
Previous Topic   Next Topic
Flat View: This topic has 0 replies on 1 page
Brendan Tompkins

Posts: 158
Nickname: brendant
Registered: Apr, 2005

Brendan Tompkins is .NET Developer and founder of CodeBetter.Com
Circular File References and Other ASP.NET 2.0 / VS 2005 Conversion Issues Posted: Nov 18, 2005 2:01 PM
Reply to this message Reply

This post originated from an RSS feed registered with .NET Buzz by Brendan Tompkins.
Original Post: Circular File References and Other ASP.NET 2.0 / VS 2005 Conversion Issues
Feed Title: Brendan Tompkins
Feed URL: /error.htm?aspxerrorpath=/blogs/brendan.tompkins/Rss.aspx
Feed Description: Blog First. Ask Questions Later.
Latest .NET Buzz Posts
Latest .NET Buzz Posts by Brendan Tompkins
Latest Posts From Brendan Tompkins

Advertisement

I’ve been plagued by  “Circular file references are not allowed” errors on our converted ASP.NET 2.0 applications.  This can happen when one ASCX control references another which contains a reference back to the first, but can also happen when there’s no obvious circular reference, such as when an ASCX control references another in a different directory that also contains other controls that reference back to the first one, or something like that (can you tell that I find this new build process slightly confusing?)… Point is, how do you get rid of it?

The docs mention this:

The solution for first type of circular reference is to create an abstract base class in the App_Code folder with one of the references, then remove the Reference directive from the associated web form or user control file. This will break the circular reference.

The second type of circular reference is a by-product of the ASP.NET compiler "batching" assemblies together for performance reasons. By default it will take the web forms and user controls in a folder and compile them into an assembly.

There are several ways to solve this issue, but we recommend moving the referenced pages (e.g. Pages2.aspx.vb and Pages3.aspx.vb) to their own folder. By default, the ASP.NET compiler will create a separate assembly containing these pages and the circular reference will be removed between Assembly A and B.

The circular references in our project weren’t completely obvious, and I’ve got bigger fish to fry right now than moving a bunch of files to get around this batch compilation issue. Fortunately, I  found some good discussion here about how to deal with this.  .

One additional note on batch=false -- this tells the ASP.NET compiler to not batch assemblies, and create an assembly for each web form and user control. When it is set to true, then the compiler will batch assemblies (in a non-deterministic way, but usually one per folder) which may hide broken references, including circular references. We recommend during development you run with batch=false, but for deployment set batch=true. This flag is set web.config, e.g.

Basically, you can just turn off batching during development, then turn it back on for deployment. Not a perfect solution, I know but will work for the time being, until I can get around to refactoring, to the recommend solution.

Another problem I ran into was running ASP.NET 2.0 and 1.1 applications side by side.  It turns out that most of the time, you can simply run your ASP.NET 1.1 compiled apps using the ASP.NET 2.0 runtime, but I did have one project that didn’t seem to want to run under 2.0.   So, I used the ASP.NET configuration tab to set the offending app to run using ASP.NET 1.1.  When I did this, I’d get “Server Application Unavailable” when running the project.  A quick peek in the event log revealed the culprit:

It is not possible to run two different versions of ASP.NET in the same IIS process. Please use the IIS Administration Tool to reconfigure your server to run the application in a separate process.

Well, this message is a bit confusing.. By “Server” they really mean “Site” or “Virtual Directory” and by “Separate Process,” they really mean Application Pool.  Setting the 1.1 site to run in its own App Pool did the trick.

We spent half of today in production with ASP.NET 2.0!  Hooray!  I’ve still got the CSS switch ready to turn it off if things go haywire, but for now things look good!

-Brendan

Read: Circular File References and Other ASP.NET 2.0 / VS 2005 Conversion Issues

Topic: Wie wahr ... Previous Topic   Next Topic Topic: Windows Live Safety Center

Sponsored Links



Google
  Web Artima.com   

Copyright © 1996-2019 Artima, Inc. All Rights Reserved. - Privacy Policy - Terms of Use