Background
I maintain several web sites that are Visual Studio "Web Site Projects".
Problem
I've found that with a couple of these projects, Visual Studio regularly freezes while I'm working on the code. This doesn't happen for some of the web site projects, and I haven't seen it happen on any Web Application projects.
Symptoms
- Each time it freezes, it takes about half a minute before I can use it again.
- During a freeze, Windows Task Manager reports that
Microsoft.VisualStudio.Web.Host.exe
is maxing out one of the CPU cores.
Steps to Reproduce
- Open a
.cs
file under the App_Code
directory.
- Make a change to the file.
- Save the file.
- Navigate somewhere else (eg switch tab, close the file, open different program in Windows).
- Navigate back to the file (eg switch tab to it, open it, or go back to Visual Studio).
Other actions that sometimes seem to trigger the problem:
- "Go to definition"
- Opening a file
- Previewing a file
- Closing a file
- Using a refactoring
- "Find usages"
What I've Tried
- Both Visual Studio 2012 and Visual Studio 2015
- Changing the website project's build action
- Disabling "Build Web site as part of solution"
- Deleting web references and the Bin folder seems to minimise the problem, but obviously this breaks the web site. Maybe web site projects experience this problem when they contain a lot of C# code other than code-behind files?
Similar problems
I found the following potentially-related problems using Google, but none of them seemed to contain a workaround or solution.
- Microsoft.VisualStudio.Web.Host.exe Time Theft
- Microsoft.VisualStudio.Web.Host.exe
- Visual Studio 2012 freezes for approximately 30 seconds after every build
I noticed that the problem happened less often when I suspended ReSharper.
The problem still happened occasionally when editing classes under App_Code
, but restarting Visual Studio worked around it.
I was facing a similar problem. A single Web application project with dozens of class libraries, migrated over from VS 2010 into VS 2013.
I was able to solve my problem by disabling the "Hosting Process" option:
To disable the hosting process
- Open an executable project in Visual Studio. Projects that do not
produce executables (for example, class library or service projects)
do not have this option.
- On the Project menu, click Properties.
- Click the Debug tab.
- Clear the Enable the Visual Studio hosting process check box.
Full details on MSDN: http://msdn.microsoft.com/en-us/library/ms185330.aspx
Another option for people experiencing this on old web applications that don't have the properties page in the accepted answer above.
Disable "Allow this precompiled site to be updatable".
- Open Site/Solution
- Right click and view Property Pages
- Go to MSBuild Options
- Uncheck "Allow this precompiled site to be updatable"
This worked for me.
They symptoms in the question of this post sound exactly like the nightmares I just had today:
Other actions that sometimes seem to trigger the problem:
"Go to definition"
Opening a file
Previewing a file
Closing a file
Using a refactoring "Find usages"
Plus intellisense wasn't working (even with CTRL + J) and
'Peek definition' was hanging as well.
I had to keep task killing visual studio (both 2015 and 2017).
My fix was to go into the project that I was having problems with, open the 'Package Manager Console' and uninstall and re-install the 'DotNetCompilerPlatform'
uninstall-package Microsoft.CodeDom.Providers.DotNetCompilerPlatform
and then
install-package Microsoft.CodeDom.Providers.DotNetCompilerPlatform
So far every problem I was encountering has not resurfaced (but this was just today so still need to give it time).
UPDATE:
It started creeping back again. I noticed also that whomever had installed to the solution had only done it to two of the various projects. Uninstalling the compiler platform (which means using the compilers that came with Visual Studio) has made life sane again.
This problem stopped happening when the Web Site project was converted into a Web Application project.
Not an easy solution, but it did stop the problem.