A colleague asked me to create a small fix on an existing library. I implemented the fix and decided to take the occasion to upgrade to .NET 8 as well. How hard can it be…
Turns out that this was harder than I thought. After upgrading the target framework moniker to .NET 8, the build started to fail with the following (cryptic) error message:
C:\Program Files\dotnet\sdk\6.0.407\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.TargetFrameworkInference.targets(144,5): error NETSDK1045: The current .NET SDK does not support targeting .NET 8.0. Either target .NET 6.0 or lower, or use a version of the .NET SDK that supports .NET 8.0.
.NET 8 was certainly installed on this machine, so that could not be the issue:
Then I took a second look at the error message and I noticed something, the compiler was using the .NET 6 SDK although the application itself was configured to use .NET 8.
Of course! Now I remembered. In this project I was using a global.json file. Through this file you can force which SDK version should be used.
And indeed when I took a look at the file I noticed that it was still configured to use .NET 6:
The fix was easy, I changed it to .NET 8 and the errors disappeared:
A better error message would certainly have saved me some time…