dotnet / sdk

Core functionality needed to create .NET Core projects, that is shared between Visual Studio and CLI
https://dot.net/core
MIT License
2.73k stars 1.07k forks source link

Uninstalling .NET SDK 8.0.300 left empty directory that caused "[MSB4236] The SDK 'Microsoft.NET.Sdk' specified could not be found." #41022

Open loop-evgeny opened 6 months ago

loop-evgeny commented 6 months ago

I installed .NET SDK 8.0.205 and then 8.0.300 as well (on Windows). I then uninstalled 8.0.300 (due to https://github.com/dotnet/fsharp/issues/17161). dotnet --info then reported that SDK 8.0.205 was used as expected.

However, when I tried to open .NET projects in JetBrains Rider it failed to load them all with

[MSB4236] The SDK 'Microsoft.NET.Sdk' specified could not be found.

It took me a while to figure out that this was because the directory C:\Program Files\dotnet\sdk\8.0.300\Roslyn still existed (with an empty bincore sub-directory in it, I believe). After I deleted that directory manually Rider loaded .NET projects successfully again.

I'm not sure to what extent this is Rider's fault, but the uninstaller should really delete the entire sdk\8.0.300 directory to avoid this.

baronfel commented 6 months ago

Hypothesis here - maybe a roslyn build-server node was still live when the uninstaller ran and so the directory couldn't be deleted?

loop-evgeny commented 6 months ago

Possible, but the uninstaller asks whether to close and restart all .NET processes or reboot. I choose "close and restart".

loop-evgeny commented 5 months ago

Just ran into this again with 8.0.302, forgot that I already ran into it before, and wasted half a day on it again!

VS also fails to load projects with "error : The SDK 'Microsoft.NET.Sdk' specified could not be found.", so this is not an issue in Rider. (Note that VS does not include the MSBuild error number, however.)

That a directory is left around by the uninstaller is a very minor problem, but the fact that this breaks loading projects, and in such a non-obvious way, is a major problem.