My VS Community 2019 stopped working after upgrading to latest, none of my projects could be loaded in VS after the upgrade. This is what I saw when I opened a simple web project.
The VS screenshot above was v16.9.1, but the exact same problem had happened once before after I upgraded to v16.9.0. Last time I re-installed VS to get around, this time even a re-install wouldn't do it. And a few days ago v16.9.2 came out and upgrading to v16.9.2 did not fix it either. Plus, none of my projects regardless type, console, web etc. were able to load. I opened up an issue on VS Developer Community forum.
Today I was trying to running my project from VS Code and dotnet.exe wasn't working from command prompt. So I fixed that and in turn I got my VS fixed.
No SDKs were found
Issue: When I execute
dotnet --list-sdks at a cmd it shows nothing, but if I go to Apps & features on Windows it shows I do have SDK v5 installed.
Diagnosis: This could be the
dotnet.exe that is running is from
C:\Program Files (x86)\dotnet\dotnet.exe instead of
C:\Program Files\dotnet\dotnet.exe. To be sure it's the case, run
"C:\Program Files\dotnet\dotnet.exe" --list-sdks
For me this shows
5.0.104 which is expected since App & features does show I have it installed.
Solution: Since the default
dotnet.exe that I'm running is the x86 version (first in %PATH% probing order), the solution is to remove it from the Environment Variable.
Windows + Pause/Breakwill bring up the System Page
- click on
Advanced system settingson the sidebar
Pathvariable on both User and System sections
My "User variables" didn't have any entries for dotnet, but my "System variables" has both the following with the x86 first on top of the x64.
"C:\Program Files (x86)\dotnet",
I simply delete the x86 entry and restart my bash cmd, then
dotnet --list-sdks outputs
Install ".NET desktop development" workload
After I fixed dotnet.exe for command prompt, the simple web project I created for testing was able to work. But my Fanray solution still could not, VS showed a warning that asked me to install extra component. Clicking on the "Install" link, the VS installer came up and asked me to install the ".NET desktop development" workload. Pretty weird I thought since I'm not sure what part of my webapp uses anything desktop related, but installing this workload worked for me.
If it's just a simple matter of dotnet.exe being used is from the wrong path, then I don't understand why VS behaved the way it did, showing this error message “Error HRESULT E_FAIL has been returned from a call to a COM component” (see the first screenshot) and asking me to install desktop workload which I never installed previously and everything was working till the recent upgrades.