nightcoder
nightcoder

Reputation: 13509

Edit and Continue: "Changes are not allowed when..."

Even if I create a clean WinForms project, Edit and Continue doesn't work and gives me the error:

Changes are not allowed when the debugger has been attached to an already running process or the code being debugged was optimized at build or run time.

  1. Edit and Continue option is checked in Tools → Options → Debugging.
  2. Optimization is not enabled.
  3. Seems like there is no any managed profiler set up.
  4. I am running in Debug mode
  5. I am running on x64 CPU and Windows XP 32-bit, but setting platform target to x86 rather than AnyCpu doesn't help.
  6. Repairing Visual Studio installation doesn't help.

I also found this article on MSDN website:

Unsupported Scenarios

Edit and Continue is not available in the following debugging scenarios:

  • Debugging on Windows 98.

  • Mixed-mode (native/managed) debugging.

  • SQL debugging.

  • Debugging a Dr. Watson dump.

  • Editing code after an unhandled exception, when the "Unwind the call stack on unhandled exceptions" option is not selected.

  • Debugging an embedded runtime application.

  • Debugging an application with Attach to rather than running the application with Start from the Debug menu.

  • Debugging optimized code.

  • Debugging managed code when the target is a 64-bit application. If you want to use Edit and Continue, you must set the target to x86. (Project Properties, Compile tab, Advanced Compiler setting.).

  • Debugging an old version of your code after a new version failed to build due to build errors.

But I can answer "No" to every item in this list.

It worked before, but several days ago it stopped working, and I don't know what could be the reason.

Upvotes: 115

Views: 140165

Answers (30)

WilliamK
WilliamK

Reputation: 1772

The solution for our case was disabling the Telerik JustMock Profiling. In Visual Studio 2022 the Hot Reload was only working when running without debugging (CTRL+F5).

If try to run in debug mode (F5) and edit a .cshtml file, the error message appears:

Hot Reload can't automatically apply your changes. The app needs to be rebuilt to apply updates.

Visual Studio - Hot reload can't apply changes error message

Additionally, at the error tab on Visual Studio, there is another message:

ENC2018 Changes made in project 'Project.Name' require restarting the application: Changes are not allowed when 'COR_ENABLE_PROFILING' environment variable is set.

Visual Studio - Changes Required Restarting because of COR_ENABLE_PROFILING

So the cause is the Registry (Regedit) key COR_ENABLE_PROFILING (Regedit) at Computer\HKEY_CURRENT_USER\SOFTWARE\Microsoft\.NETFramework, and they are created if we activate the Progress/Telerik Just Mock Profiling extension, that we use in old projects in Visual Studio 2017.

Disable Telerik JustMock extension on VisualStudio

After turning it off, and restart the debugging app on VS2022, the debugging and hot reload can work together! 🔥

Upvotes: 0

beppe9000
beppe9000

Reputation: 1114

Other Applicable Solutions:

Below is an incomplete, unordered list of possible solutions to try if you* are trying to fix Edit & Continue quickly.

  • Make sure you are in Debug Mode

  • Make sure you're not launching a mixed mode process

  • Try to set the CPU target to x86 rather than AnyCPU (on x64 machines)

  • Uncheck the Optimize Code checkbox for Debug Mode in Project Properties->Debug

  • Uncheck the Optimize Code checkbox in Project Properties->Build

  • Uncheck Enable Optimizations in Advanced Compiler Settings

  • (ASP.NET) Check nightcoder's answer if it is the case

  • (ASP.NET) Check this answer (by matrixugly) if it is the case

  • (ASP.NET) Ensure you have Edit and Continue enabled on the Web tab (vs2010)

  • (ASP.NET) Go to Properties > Web > Servers, and make sure that Enable and continue is checked under Use Visual Studio Development Server.

  • (ASP.NET WebAPI) Make sure you've stopped in the Controller's method using a breakpoint, before trying to edit it.

  • (ASP.NET MVC) Conditionally compile app.UseResponseCompression() to exclude from Development environment from here.

  • (ASP.NET Core 6) If used with RuntimeCompilation make sure the nuget packages is updated past 6.0.9 Reference, be aware that Hot Reload without RuntimeCompilation is new recommended approach, but a workaround if affects performance.

  • (vs2017) Go to Tools > Options > Debugging and uncheck (deselect) 'Edit and Continue'. This is actually the opposite of the 'conventional' advice (see some other points in this post). It does not allow you to actually make changes in your running program (i.e. it does not hot-swap the code changes that you make) - it simply allows you to edit your code (i.e. it prevents that annoying message and "locking" your editor).

  • Go to Tools > Options > Debugging > General and make sure Require source files to exactly match the original version is unchecked.

  • Check Enable Windows debug heap allocator (Native only) [VS Community 2017]

  • Are you using Microsoft Fakes? It inhibits Edit & Continue.

  • Kill all the *.vshost.exe instances by selecting End Process Tree in the Task Manager. VS will regenerate a correct instance.

  • Remove all the breakpoints with Debug->Delete All Breakpoints

  • Enable and Continue exists in both the Tools > Options > Debugging menu and also in the Project Settings. Be sure to check both places. edit & Continue is not supported with the extended Intellitrace setting.

  • Be sure Debug Info in Project Properties > Build > Advanced > Output > Debug Info is set to Full

  • Some plugin may be interfering. Check by disabling/uninstalling and then trying again the other solutions.

  • If you're not paying enough attention, the error you get while trying to fix this may change to something else that is easier to diagnose. E.g. A method containing a lambda expression cannot support edit and continue.

  • Make sure the System variable COR_ENABLE_PROFILING and/or CORECLR_ENABLE_PROFILING is not set to 1. Some profilers set this when installing and leave it like that after uninstalling. Open a command prompt and type set to quickly check it your system is affected, if so remove the variable or set it to 0:

    • In Windows 8 and above, search for System (Control Panel).
    • Click the Advanced system settings link.
    • Click Environment Variables.
    • Remove COR_ENABLE_PROFILING and/or CORECLR_ENABLE_PROFILING
  • Be aware of unsupported scenarios (as reported in the question) and that unsupported edits.


* by 'you', I mean the visitor of the page who is hammering his head on a keyboard to find The solution.


Feel free to edit this answer to add your workaround if not listed here!

Upvotes: 87

Brad Mathews
Brad Mathews

Reputation: 1857

Edit and Continue has not worked for these 2 particular projects since VS2013 so I have kept it around for those. A fresh attempt to get it working on VS2022 finally yielded a cause:

On Error

If you edit code within an On Error you get the "edits were made which cannot be compiled" error. Setting the Error list Show Options to Build + Intellisense you finally see the error "Updating a On Error statement around an active statement requires restarting the application" which is what is blocking continuing execution.

Sad, as I have intentionally kept this legacy error handling method for these two particular projects for a very specific reason and needing to go to structured error handling is a major productivity setback.

But now I need to use some more modern libraries which are no longer compatible with VS2013 so I am forced to move on.

Upvotes: 0

Giampaolo Ficorilli
Giampaolo Ficorilli

Reputation: 121

VS2019 - ASP.NET Forms In my case was Tools - Options - Windows Forms Designer - "Optimized Code Generation" <- to false

Upvotes: 0

Masarwa
Masarwa

Reputation: 43

I had this annoying issue since I upgraded my VS 2019 to 16.4.3 and caused me a lot of headache.
Finally I solved the problem this way:

1. Stop Debugging
2. Select the solution from "Solution Explorer"
3. In the Properties window change the "Active config" Property From "Release|Any CPU" To "Debug|Any CPU"
4. In Debug > Options > General Check the Edit and Continue checkbox

That worked for me, and hope it works for you too.

Upvotes: 1

kuldeep chopra
kuldeep chopra

Reputation: 782

I install the stackify, when i enable this on icon tray, it stop my debugging with edit, so i found

  • Close the visual studio , in my case its vs2017
  • Go to icon tray and right click on stackify icon and disable .NET Profiler
  • Open Visual studio run application again in debug mode with debugger and it allow me edit while debugging

see image

Upvotes: 1

leo
leo

Reputation: 1275

I'm adding my answer because the thing that solved it for me isn't clearly mentioned yet. Actually what helped me was this article:

http://www.rubencanton.com/blog/2012/02/how-to-fix-error-changes-are-not-allowed-while-code-is-running-in-net.html

and here is a short description of the solution:

  1. Stop running your app.
  2. Go to Tools > Options > Debugging > Edit and Continue
  3. Disable “Enable Edit and Continue”

Note how counter-intuitive this is: I had to disable (uncheck) "Enable Edit and Continue".

This will then allow you to change code in your editor without getting that message "Changes are not allowed while code is running".

Note however that the code changes you make will NOT be reflected in your running program - for that you need to stop and restart your program (off the top of my head I think that template/ASPX changes do get reflected, but not VB/C# changes, i.e. "code behind" code).

Upvotes: 1

Bluebaron
Bluebaron

Reputation: 2516

Had this problem in Rider. I had opened the .csproj file directly instead of the .sln file. The consequence is that the runtime configuration was not set to debug even though I clicked the debug button. You'll notice it says <No Configurations> in the toolbar beside the debug button.

Upvotes: 0

vapcguy
vapcguy

Reputation: 7537

For me, it was happening after I had hit a breakpoint, had done some edits, then continued on stepping through the code, then finally hit F5 or "Continue" to get to the end and out of my code block.

After trying the "delete all breakpoints" option (Ctrl+Shift+PrtScn and OK on the prompt) and doing a Rebuild All, I still had an error in my Error Log with regard to my DLL for my project not loading... "Can't apply changes, x.DLL not loaded". After restarting Visual Studio, all was fine again. For me, it turned out to be just this simple.

Other things here did not work for me, like "Require source files to exactly match the original version" was checked before and after things started working again just fine, and targeting "Any CPU" on my x64 machine is just fine, too (did not need to specify x86 or x64). I had "Enable Edit and Continue" enabled in my Tools > Options > Debugging and in my Project Properties > "Web" tab settings.

Upvotes: 0

Ahmad Aghazadeh
Ahmad Aghazadeh

Reputation: 17131

Enable edit and Continue only work run IIS Express. Don't work in Local ISS or External Host.

Upvotes: 1

B. Cafaro
B. Cafaro

Reputation: 21

what worked for me was unchecking "Use Managed Compatibility Mode" under

Tools -> Options -> Debugging

TBN: checking or unchecking "Require source file to exactly match the original version" seems not influences the E&C

Hope this can help.

Upvotes: 1

FRK
FRK

Reputation: 11

Seems illogic, but only way was disabling edit and continue from VS 2017 options... Then AspNet edit and continue began to work...

Upvotes: 1

Sanjeev Singh
Sanjeev Singh

Reputation: 4066

I was facing the same problem in Visual Studio 2005. My configuration is 64 bits. It was working fine on one of the VS solution but not the other. I noticed i only enabled "Enable edit and continue" for the project where i wanted to make changes in debug mode. This finally solved for me when I selected "Enable and Continue" for my start up project as well.

There was no configuration changes except the enable and continue needed.

Upvotes: 0

Nieksa
Nieksa

Reputation: 374

For VS2017 it can help to remove the .suo file in your solution, it worked for me. :)

Upvotes: 0

Adam
Adam

Reputation: 411

I had a database project in the solution which stopped the webforms project from being editted.

I clicked "Unload" on the database project and everything now works sweetly.

Upvotes: 0

Ajay
Ajay

Reputation: 18421

I faced the same problem. My problem was that I could modify a file, but not another (both are in same project). Later I found that the file I couldn't modify was also part of another project. That another project (Unit Test) wasn't loaded, and intelligent VS debugger shows the error that assembly for this given file was not loaded, and changes aren't allowed. How weird!

Hence, I had to unload the unit-test project and continue the EnC debugging.

Upvotes: 0

Protector one
Protector one

Reputation: 7261

"Edit and Continue", when enabled, will only allow you to edit code when it is in break-mode: e.g. by having the execution paused by an exception or by hitting a breakpoint.

This implies you can't edit the code when the execution isn't paused! When it comes to debugging (ASP.NET) web projects, this is very unintuitive, as you would often want to make changes between requests. At this time, the code your (probably) debugging isn't running, but it isn't paused either!
To solve this, you can click "Break all" (or press Ctrl+Alt+Break). Alternatively, set a breakpoint somewhere (e.g. in your Page_Load event), then reload the page so the execution pauses when it hits the breakpoint, and now you can edit code. Even code in .cs files.

Upvotes: 6

jlo-gmail
jlo-gmail

Reputation: 5038

I had this happen in a linked class file. The rest of the project allowed E&C, but I got the same error editing the linked file. Solution was to break linked file into it's own project and reference the project.

Upvotes: 0

Wilma Fingerdoo
Wilma Fingerdoo

Reputation: 1

embed interop types visual studio should be set to false

Upvotes: 0

Guy Danus
Guy Danus

Reputation: 776

I ran into this today - turns out that having Debug Info set to pdb-only (or none, I'd imagine) will prevent Edit and Continue from working.

Make sure your Debug Info is set to "full" first!

Project Properties > Build > Advanced > Output > Debug Info

Upvotes: 2

stevebot
stevebot

Reputation: 24005

I did all the changes mentioned in every other answer and none worked. What did I learn? Enable and Continue exists in both the Tools > Options > Debugging menu and also in the Project settings. After I checked both, Enable and Continue worked for me.

Upvotes: 1

user2412450
user2412450

Reputation: 1

I had this problem in Microsoft Visual Studio 2008 and the solution is easy. when you run your project please set in "Debug" mode not "Release". The another people solution can be useful.

Upvotes: 3

Vinay
Vinay

Reputation: 1

Following shooting helped me using VS2010:

go to Tools, Options, Debugging, General and make sure "Require source files to exactly match the original version" is unchecked.

Upvotes: 4

ashkan_jami
ashkan_jami

Reputation: 1

I removed a dataset from my project because I didn't use it. After that I could modify the program when debugging.

Upvotes: 1

Amer
Amer

Reputation: 1

I had the same problem. I even re-installed VS 2008 but the problem did not go away. However, when I deleted all the break points then it started to work.

Debug->Delete All Breakpoints

I think it was happening because I had deleted an aspx page that had break points in its code, and then I created another page with the same name. This probably confused the VS 2008.

Upvotes: 12

Scott
Scott

Reputation: 1

Some things that seemed to help using VS2010:

  • go to Tools, Options, Debugging, General and make sure "Require source files to exactly match the original version" is unchecked.
  • multiple .vshost.exe instances can be left over from e.g. detaching the VS debugger from a stopped process. This will interfere with breakpoints and compiles as well. Use Task Manager, Processes tab to kill all instances of .vshost.exe by right-clicking each instance and selecting End Process Tree. VS will create a new instance.

Upvotes: 1

viggity
viggity

Reputation: 15237

If you're debugging an ASP.NET application, go to properties > web > Servers, and make sure that "enable and continue" is checked under Use Visual Studio Development Server.

Upvotes: 23

KuldeepVerma
KuldeepVerma

Reputation: 41

This problem is due to Intellitrace setting

If Intellitrace is enabled make sure Intellitrace event only is checked

Otherwise this will not allow edit and continue..

If you will click on Intellitrace options you will see the warnings.

Upvotes: 4

RAL
RAL

Reputation: 1

I found that even though under project properties build & debug tab are set to Debug and all the other setting are correct I still get the message, however after digging some more under the Build menu select Configurations Manager... and make sure Debug is selected in two places there as well. go figure...how many different places do they need to set debug?????? even though you set Project - Configuration to Debug then under Build - Manager it is not changed so you have change the same setting there as well Project Configuration - seems like a microsoft issue again.......

Upvotes: 4

JayW
JayW

Reputation: 421

None of the above solutions worked for me(running on a 64x machine).

Finally I clicked on 'advanced compiler settings' and UNCHECKED 'enable optimizations' and I can now step through code and edit while debugging.

Upvotes: 5

Related Questions