Fehlermeldung bezüglich nicht gefundenem 32-Bit-.NET-Core-SDK

Auf einem Entwickler-Rechner hat ein Kollege von mir alle 32-Bit-.NET-Core-SDKs deinstalliert und nur noch 64-Bit-SDKs installiert.

Komischerweise erscheint dann an verschiedenen Stellen des Build-Prozesses auf Befehlszeilenebene (also wenn der Build nicht in VS passiert) eine Fehlermeldung der Form:

error: Das .NET SDK konnte nicht gefunden werden. Stellen Sie sicher, dass das SDK installiert und die in „global.json“ angegebene Version (falls vorhanden) mit der installierten Version übereinstimmt.

Auszug aus dem Protokoll:

MSBuild auto-detection: using msbuild version '17.0.0.51408' from 'C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\bin'.
C:\MyProjects\RuntimeContracts\RuntimeContracts.csproj : error : Das .NET SDK konnte nicht gefunden werden. Stellen Sie sicher, dass das SDK installiert und die in "global.json" angegebene Version (falls vorhanden) mit der installierten Version übereinstimmt.
C:\MyProjects\RuntimeContracts\RuntimeContracts.csproj : error MSB4236: Das angegebene SDK "Microsoft.NET.Sdk" wurde nicht gefunden.
C:\MyProjects\RuntimeCore\RuntimeCore.csproj : error MSB4236: Das angegebene SDK "Microsoft.NET.Sdk" wurde nicht gefunden.
C:\MyProjects\WebCore\WebCore.csproj : error : Das .NET SDK konnte nicht gefunden werden. Stellen Sie sicher, dass das SDK installiert und die in "global.json" angegebene Version (falls vorhanden) mit der installierten Version übereinstimmt.
C:\MyProjects\WebCore\WebCore.csproj : error MSB4236: Das angegebene SDK "Microsoft.NET.Sdk.Web" wurde nicht gefunden.
C:\MyProjects\FrakoApiImporter\FrakoApiImporter.csproj : error MSB4236: Das angegebene SDK "Microsoft.NET.Sdk" wurde nicht gefunden.
C:\MyProjects\FrakoRestApiMockServer\FrakoRestApiMockServer.csproj : error MSB4236: Das angegebene SDK "Microsoft.NET.Sdk.Web" wurde nicht gefunden.
C:\MyProjects\RuntimeExpressionEvaluator\RuntimeExpressionEvaluatorCore.vbproj : error MSB4236: Das angegebene SDK "Microsoft.NET.Sdk" wurde nicht gefunden.
A compatible installed .NET SDK for global.json version [5.0.402] from [C:\MyProjects\global.json] was not found.
Install the [5.0.402] .NET SDK or update [C:\MyProjects\global.json] with an installed .NET SDK:
It was not possible to find any installed .NET SDKs.
Install a .NET SDK from:
https://aka.ms/dotnet-download
A compatible installed .NET SDK for global.json version [5.0.402] from [C:\MyProjects\global.json] was not found.
Install the [5.0.402] .NET SDK or update [C:\MyProjects\global.json] with an installed .NET SDK:
It was not possible to find any installed .NET SDKs.
Install a .NET SDK from:
https://aka.ms/dotnet-download

Und das, obwohl „C:\Program Files\dotnet\sdk“ korrekt in der „Path“-Umgebungsvariable stand.

Wir waren ratlos, bis wir die „Path“-Variable in diesem Dialog hier angeschaut haben:

Beim Klick auf „OK“ kam dann die Meldung, dass die Umgebungsvariable zu lang war (ich glaube mehr als 2.048 Zeichen oder so).

Und dann dämmerte es uns:

  1. „C:\Program Files\dotnet\sdk“ stand recht weit unten in der Liste.
  2. Mutmaßlich stand es dann nach der maximalen Länge und wurde ignoriert.

Die Lösung war dann schlicht, unnötiges Zeugs aus der Liste der Einträge der „Path“-Umgebungsvariable zu entfernen.

Anschließend liefen die Buildskripte wieder korrekt durch.

Soeben hatte ich einen ähnlichen Fall, dass der Aufruf von

dotnet --list-sdks

keine Ergebnisse lieferte, obwohl in „C:\Program Files\dotnet\sdk“ mehrere SDKs vorhanden waren.

Ursache war wiederum eine zu lange Path-Variable. Ich habe dann die globale und die Benutzer spezifische Path-Variable um (aus meiner Sicht) unnötige Pfade bereinigt.

Anschließend lieferte

dotnet --list-sdks

dann wieder korrekt die Liste der SDKs.