Reputation: 1861
I am having this frustrating problem. I change text in a razor view (cshtml), Start without Debugging
, refresh (Ctrl+F5) the browser but nothing happens. The strange part is that if I modify a controller's return value (say return Ok("test");
) or an included static file (like CSS), refresh, the change is visible. The razor view only updates if I stop start and stop debugging every time.
Here are things I have already tried:
Detect when file is changed outside the environment
is checked.On run, when projects are out of date
is Always build
.P.S. I see there are many similar questions, none of the answers, however, seem to fix my problem.
Update
This appears to be a problem on a much larger scale. If I:
@RenderSection("css", required: true)
.InvalidOperationException: The following sections have been defined but have not been rendered by the page at 'bla\bla\bla':css
.At this point, VS 2015 is practically unusable because you don't know, if you're actually missing something or it's VS acting out
Upvotes: 17
Views: 26008
Reputation: 66
Thanks to an answer to this question, about file permissions, I realized that the Windows "Temp" folder located in C:\Users\username\AppData\Local, did not have my user with permissions, it only had administrator and "everyone", I had to manually add my user and give it all permissions on the "Temp" folder. Before that, I cleaned my Temp folder (as much as possible) and in the project I cleaned the .vs, bin and obj folder. I opened the project again and it worked for me.
Tested on VS2022
Upvotes: 0
Reputation: 31
On Parallel virtual machines, on the Macbook Pro, if the project files are in shared folders, the recompilation mechanism will not work; Copy the folder to drive C and the problem will be solved
Upvotes: 3
Reputation: 110
There are two ways to resolve this issue:
1. Check the permissions of folder in which your .sln file present.There may be a problem with file access permissions as Visual studio may not be to access files when IIS express server is running, so to reflect new .cshtml changes each time you need to restart the server,so I suggest edit the folder access permissions by:
Right click on folder->properties->security->click on edit button -> check all options->save.
Restart Visual studio to see changes.
If this does not work then use 2 option.
2.In your project in startup.cs file add this below line ConfigureServices() in method :
services.AddMvc().AddRazorOptions(options => options.AllowRecompilingViewsOnFileChange = true);
Upvotes: 1
Reputation: 13966
check your web.config
and make sure you do not have fcnMode="Disabled"
or fcnMode="NotSet"
use
<httpRuntime targetFramework="4.5.2" fcnMode="Default" />
or
<httpRuntime targetFramework="4.5.2" fcnMode="Single" />
- Default For each subdirectory, the application creates an object that monitors the subdirectory. This is the default behavior.
- Disabled File change notification is disabled.
- NotSet File change notification is not set, so the application creates an object that monitors each subdirectory. This is the default behavior.
- Single The application creates one object to monitor the main directory and uses this object to monitor each subdirectory.
Upvotes: 6
Reputation: 166
If you're running on Mac using a Parallels WM and you project is located on you Mac-volume, you can solve this with using chmod.
chmod -R 777 *
Upvotes: 2
Reputation: 707
I had this problem before. My case was i run windows 10 VM Parallel on Macbook Pro, and the project files are in shared folder with mac OS.
Incase someone has the same case like me, move the project to non shared directory such as C:\ will fix the problem.
Upvotes: 15
Reputation: 615
Just had the same issue. After debugging for a long time and trying almost everything we found out that someone had moved the file from one folder to another in Visual Studio and checked that in to TFS. So the project file was updated but the original file still existed on disk. So my local IIS rendered the old file and not the new file on the new location.
This was frustrating, yes.
Upvotes: 1
Reputation: 5638
Here's what seems to be happening under the hood: the .net framework compiles your razor into a machine-form (DLL) and executes this. It then monitors your web folder to watch for changes, and when it detects changes, it re-compiles your razor and executes the new DLL.
In your case something seems to fail related to the monitoring file-changes. It still works on a full restart, because then compiling happens even without file-change detection. Common reasons are:
To confirm that this is the issue, I recommend just editing the web.config (add/remove a character) and see if then the reload is successful - just to prove it's a re-compile issue and not a visual-studio-debugging issue. Assuming this is the case, and assuming it's not a NAS, I would recommend to temporarily give the folder a "everyone - everything" permission to see if it works then, and then gradually reduce the permissions again to where you want them.
Upvotes: 7