I’m working on a fairly large ASP.NET web application and I’m taking a big productivity hit when I do work in the interface. I can zip through adding features to the database and API, then I hit the interface and having to recompile and run eats up a lot of my day.
For example if i’m working on a tricky bit that isn’t behaving quite right and requires a number of tweaks I’ll have to go through multiple [stop/tweak/build/run/log in/navigate back to page] cycles, which really kills my flow and has me staring at the screen with my finger hovering over the hackernews bookmark each time.
I’ve been fiddling with ways to get around this problem but I haven’t improved my situation much. Here’s what I’ve found so far:
- visual studio will restart the app frequently when you change static files (js/css/etc), which shouldn’t require a restart. If you run VS with IIS express instead this problem goes away.
- If I know I have a bunch of messing around to do i’ll cut/paste my code into a server script tag on the markup page, run the product, and tweak until it’s good, then cut/paste it back. This is annoying because it often requires setting up a number of Imports page declarations and code editing features in ASP.NET files, while better than ever in VS2010, is not as good as in C# files. Plus, it still restarts the app occasionally once enough changes are made.
- I can exclude the codebehind file from the web application project, change the “codebehind” attribute in the aspx page declaration to an “src” attribute, then edit the code from there while the app runs (until i make enough changes to trigger a restart.) However now intellisense doesn’t work in the codebehind, among other things.
Am I missing something blindingly obvious here, or is development in ASP.NET web applications really supposed to be this slow? Thanks for any solutions you can offer.
I’ve found a combination of techniques that brings my productivity up a fair bit.
Now when I’m getting into it I can stop the debugger (which no longer closes the browser,) make code changes, build, optionally start the debugger again, and just hit F5 in Chrome to load the latest. The refresh obviously takes longer since the app has to start up but there’s no “run browser/log in/navigate back to the page” task anymore.
Hopefully this will help somebody else in a similar situation.