Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
Simulated
Sep 28, 2001
Lowtax giveth, and Lowtax taketh away.
College Slice
Is there any way to get the ASP.Net precompiler to spit out the actual circular references when it gives you that idiotic circular reference error? I've got it setup to merge all output to a single assembly and there are no actual circular references, but the way it batch compiles each folder means if /sub1/A -> /sub2/B and /sub2/C -> /sub1/D then ASP.Net creates a circular reference out of thin air for you. Why it doesn't just compile the whole site as one batch in that mode I have no idea.

The error message is extremely helpful by choking on a completely unrelated ASCX control (or anywhere really) the next time it happens to need to resolve something in /sub1/ or /sub2/ in my example, so you get no help whatsoever in locating the actual problem.


I can't see how anyone at Microsoft is maintaining any of this stuff because the VS compilation process, publish without precompile, and the precompile all have extremely different ideas about what "compilation" actually means. The site itself runs just fine... perfectly in fact with zero errors. You just can't do a packaged installer build thanks to the fake circular reference helpfully created for me by ASP.Net


Doing it by hand means examining the markup for a couple hundred ASPX and ASCX files, looking at what pages/controls they register, noting what folders everything lives in, then resolving down the folder differences to find the two pairs causing the "circular" reference. We're about to give up and just tell it to generate one assembly per page/control, even though that takes a 5 minute build to like an hour, or just dump all the user controls in one huge directory.

Adbot
ADBOT LOVES YOU

Simulated
Sep 28, 2001
Lowtax giveth, and Lowtax taketh away.
College Slice

Ender.uNF posted:

Is there any way to get the ASP.Net precompiler to spit out the actual circular references when it gives you that idiotic circular reference error? I've got it setup to merge all output to a single assembly and there are no actual circular references, but the way it batch compiles each folder means if /sub1/A -> /sub2/B and /sub2/C -> /sub1/D then ASP.Net creates a circular reference out of thin air for you. Why it doesn't just compile the whole site as one batch in that mode I have no idea.

The error message is extremely helpful by choking on a completely unrelated ASCX control (or anywhere really) the next time it happens to need to resolve something in /sub1/ or /sub2/ in my example, so you get no help whatsoever in locating the actual problem.


I can't see how anyone at Microsoft is maintaining any of this stuff because the VS compilation process, publish without precompile, and the precompile all have extremely different ideas about what "compilation" actually means. The site itself runs just fine... perfectly in fact with zero errors. You just can't do a packaged installer build thanks to the fake circular reference helpfully created for me by ASP.Net


Doing it by hand means examining the markup for a couple hundred ASPX and ASCX files, looking at what pages/controls they register, noting what folders everything lives in, then resolving down the folder differences to find the two pairs causing the "circular" reference. We're about to give up and just tell it to generate one assembly per page/control, even though that takes a 5 minute build to like an hour, or just dump all the user controls in one huge directory.

FYI for anyone who cares:

The awful pile of garbage that is McAfee strikes again! It turns out this entire issue was caused by the McAfee virus scanner rushing in and hijacking the files in the precompile temp directory in the middle of the precompile. Disabling McAfee (which is only temporary until the dump corporate ePolicy crap overwrites the changes) makes the problem disappear.

Separately, our QE servers were also getting constant session timeouts due to app domain restarts (with nothing in the event log or on Process Monitor). Turns out after enabling detailed logging the app domain was restarting due to "config file or bin change" when no activity was visible on Process Monitor... in other words, the McAfee root kit hid the file activity but still triggered the file watcher to restart. That restart activity would trigger McAfee to scan again for whatever reason, putting everything in an eternal loop.


McAfee installs 19 different drivers and services, including hidden boot-critical devices, it's own root kit of sorts, NDIS mini port filters, and more. It has to be the worst piece of garbage ever written. Our corporate policy also requires scanning on every single read and write for every single filetype. :v:

I am so happy to be getting out of this place.

Simulated
Sep 28, 2001
Lowtax giveth, and Lowtax taketh away.
College Slice
Until you're disassembling WCF DLLs to figure out why ReliableSession arbitrarily faults channels under heavy CPU load, only to discover it services heartbeat timers from a shared IO thread pool with normal priority you have no right to talk about painful built in frameworks. Did you want to use binary over TCP with SSL? Well get ready to follow the blog post chain because that poo poo sure ain't documented!

I could rant for hours about WCF.

Simulated
Sep 28, 2001
Lowtax giveth, and Lowtax taketh away.
College Slice

A Tartan Tory posted:

Thanks for the tips, I still find it hard to spot idiotic things that I do when coding.

To be fair to you, this is one of the vast number of pitfalls and absurdities everyone encounters when learning. Why would the default ToString() behavior of any object be to print its type name? When is that ever useful? (hint: never).

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply