dnx-scripts overslaan global.json SDK-selectie

De dnx en dnx.cmd scripts gebruiken de .NET muxer niet meer om de SDK-versie te selecteren. In plaats daarvan vinden ze de nieuwste geïnstalleerde SDK en roepen ze deze rechtstreeks aan, waardoor elk global.json bestand in de werkmap wordt overgeslagen.

Geïntroduceerde versie

.NET 10 SDK 10.0.302, 10.0.400 en .NET 11 Preview 6

Vorig gedrag

Voorheen riepen de scripts dnxdotnet dnx aan, dat afhankelijk was van de .NET-muxer om de SDK-versie te selecteren op basis van een global.json-bestand in de werkmap. Als global.json een SDK-versie van vóór .NET 10 had vastgezet, mislukten de scripts met de volgende fout:

Unrecognized command or argument 'execute'

Vanaf .NET 10 SDK 10.0.302 (en hoger) en .NET 11 Preview 6 worden de dnx en dnx.cmd scripts gebruikt dotnet --list-sdks om de nieuwste geïnstalleerde SDK te identificeren. Vervolgens roepen ze dotnet exec <sdk-path>/dotnet.dll dnx rechtstreeks aan, waarbij de .NET muxer en eventuele global.json SDK-pinning worden omzeild.

Type van brekende verandering

Deze wijziging is een gedragswijziging.

Reden voor wijziging

Sommige .NET CLI-opdrachten, waaronderdnx, worden beschouwd als versie-onafhankelijke functies die altijd moeten worden uitgevoerd met de nieuwste geïnstalleerde SDK. Vertrouwen op global.json betekende dat gebruikers die een oudere SDK-versie hadden vastgezet om het risico van build-verstorende wijzigingen te beperken, ook onbedoeld dnx kapotmaakten. In mappen waarin een vooraf .NET 10 SDK is vastgemaakt, was de dnx opdracht niet beschikbaar, wat verwarrende fouten veroorzaakte en in sommige gevallen time-outs in hulpprogramma's zoals Copilot CLI.

Als u het vorige gedrag wilt herstellen, waarbij de .NET-muxer en global.json de SDK-selectie bepalen, voert u dotnet dnx expliciet uit in plaats van het script dnx.

Betreffende API's

None.