|
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.
|
# ¿ Jul 23, 2014 00:46 |
|
|
# ¿ May 2, 2024 07:10 |
|
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. 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. I am so happy to be getting out of this place.
|
# ¿ Aug 2, 2014 05:17 |
|
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.
|
# ¿ Aug 4, 2014 16:28 |
|
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).
|
# ¿ Aug 11, 2014 07:43 |