Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to Edit and Continue in ASP.Net MVC 6

Tags:

Back in the days using older versions of Visual Studio and ASP.NET was possible to edit the code while you were debugging it (even with some limitations).

How can I enable edit and continue using ASP.Net/VNext (MVC 6) with VS 2015 RC. This feature is available? The message that I receive is:

Error "Changes are not allowed if the project wasn't built when debugging started".

How can I build the project when the debug mode is starting?

like image 948
J. Lennon Avatar asked Jun 03 '15 23:06

J. Lennon


People also ask

How do you use same view for add and edit in MVC?

Use the same View Model aka CreateUpdateViewModel and discarding extra UpdateBindingModel properties in the view but still posting the corresponding model on POST. Having your binding models as properties and select one or the other in the specific view. (better use @Html.

How do I turn off break mode in Visual Studio?

There is a free extension to resolve this issue: Disable No Source Available Tab available for from the VS Market Place. This small extension will prevent the tool window with title "No Source Available" from appearing in Visual Studio, and preserve the focus on the currently active tab.

What is a hot reload in Visual Studio?

CSS Hot Reload: You can change CSS files while the app is running, and changes are applied immediately to the running app as you type. No Debugger: You get Hot Reload support when using Visual Studio to start your web app without the debugger (CTRL-F5).


2 Answers

I got Edit and Continue to work in VS 2015 on my ASP.Net MVC 4 project. David R posted a link in his answer (here again for completeness)

http://blogs.msdn.com/b/visualstudioalm/archive/2015/04/29/net-enc-support-for-lambdas-and-other-improvements-in-visual-studio-2015.aspx

The page says that VS2015 supports Edit Continue on Attach To Process if an environment variable is set during load of the runtime. The way I understand it is that this variable cues in the CLR to allocate a little bit of extra memory which is needed for Edit and Continue to work.

Now the trick is to get the w3wp.exe process running your application pool to load with this variable. On any other process I would just open a command line and do

set COMPLUS_FORCEENC=1 ExeToDebug.exe 

But I couldn't find a way to directly run my app pool with an environment variable. I posted a workaround (as CSUdev) on this page, that is a little hack which sets a machine level environment variable, resets iis, calls a url which starts the app pool, then clears the machine level environment variable. http://forums.iis.net/p/1195182/2115550.aspx?p=True&t=635895941266217500

The OP in that thread said he used to have this working in prior versions of IIS by setting Environment variables for the user profile that the Application Pool would then load when its user profile loaded, although he wasn't able to get the working in IIS8 (might be related to WS2012/Win8 security settings in the OS).

tldr; here's how I got it working

Wrote bat script...

#set Edit n Continue variable (global... :/ ) setx /m COMPLUS_FORCEENC 1  #kill/restart existing app pools iisreset  #force app pool to start up (and use the Edit & Continue var) #you can download wget or curl (instead of start)  #if you don't want this to open up your default browser every time start "http://localhost/urlForAspNetApp"   #clear Edit n Continue var setx /m COMPLUS_FORCEENC "" 

Then VS2015 attach to process w3wp.exe. Bam. Edit and Continue. Thanks MS & VS2015 folks!

like image 65
C. Tewalt Avatar answered Oct 25 '22 23:10

C. Tewalt


Edit and Continue does not work for ASP.NET 5 applications at this point in Visual Studio 2015, but it is planned to support it in the final 2015 release.

For more information about VS2015 ENC changes, have a look at this blog entry: http://blogs.msdn.com/b/visualstudioalm/archive/2015/04/29/net-enc-support-for-lambdas-and-other-improvements-in-visual-studio-2015.aspx

like image 27
David Roth Avatar answered Oct 26 '22 01:10

David Roth