views:

430

answers:

2

Although Enable Edit and Continue is checked on the Web tab of my ASP.Net MVC 2 project, I cannot in fact change the source code while running. For example, if I try to edit a controller while paused in the debugger, I cannot change the file (acts as if read only).

I found a related post Edit and continue in ASP.NET web projects, however

  • The answers seem to suggest I should be able to at least edit the code, then reload the page to see the result.
  • I don't know what the distinction is between a Web Application and Web Site projects

Any guidance is appreciated.

+5  A: 

The distinction is that a Web Application needs to be compiled while a Web Site is compiled dynamically when executed (even the code behind).

As ASP.NET MVC uses a web application every time you make a change you need to recompile it and recompiling requires leaving the Debug mode. Indeed you could modify views and partials without the need of recompiling but for controller logic you always need to recompile.

To speed things up I would recommend you the following:

  1. When working with views and partials (i.e. doing some design stuff) run the application with Ctrl+F5 instead of F5 which will simply start the application in normal mode and your changes will be automatically picked up when you refresh the browser
  2. When working with code behind you should have a corresponding unit test that will allow you to quickly check the behavior. In this case running in Debug mode might be more useful as you might require checking values.
Darin Dimitrov
+1 @Darin, good explanation.
griegs
+1  A: 

Further to @Darin's answer I'd have to say I don't like the idea of being able to change code whilst running.

I think we should be disciplined enough to write a test that reflects the expected outcome, write the code and then test live.

Having said that though, the way I get around that is to start the application in a browser w/out running, making my changes, compiling and then refreshing the browser.

Of course then I don't have the benefit of stepping through code but I can attach to the worker process at any time I need to.

griegs