dnx-skript kringgår global.json SDK-val

Skripten dnx och dnx.cmd använder inte längre .NET muxer för att välja SDK-versionen. I stället hittar de den senaste installerade SDK:n och anropar den direkt, vilket kringgår alla global.json filer i arbetskatalogen.

Version lanserad

.NET 10 SDK 10.0.302, 10.0.400 och .NET 11 Förhandsversion 6

Tidigare beteende

Tidigare anropade dnx-skripten dotnet dnx, som förlitade sig på .NET-muxern för att välja SDK-version baserat på en eventuell global.json-fil i arbetskatalogen. Om global.json låste till en SDK-version som var äldre än .NET 10 misslyckades skripten med följande fel:

Unrecognized command or argument 'execute'

Från och med .NET 10 SDK 10.0.302 (och senare) och .NET 11 Förhandsversion 6 används dnx skripten dnx.cmd och dotnet --list-sdks för att identifiera den senaste installerade SDK:n. De anropar sedan dotnet exec <sdk-path>/dotnet.dll dnx direkt och kringgår .NET-muxern och eventuell global.json SDK pinning.

Typ av brytande ändring

Den här ändringen är en beteendeförändring.

Orsak till ändringen

Vissa .NET CLI-kommandon, inklusive dnx, anses vara versionsoberoende funktioner som alltid ska köras med den senaste installerade SDK:n. Att förlita sig på global.json innebar att användare som fäst en äldre SDK-version för att minska risken för ändringar som påverkar bygget också oavsiktligt bröt .dnx I mappar där en SDK-version äldre än .NET 10 var fastnålad var kommandot dnx inte tillgängligt, vilket orsakade förvirrande felmeddelanden och i vissa fall tidsgränsöverskridanden i verktyg som Copilot CLI.

För att återställa det tidigare beteendet där .NET-muxern och global.json styr val av SDK, kör du dotnet dnx uttryckligen i stället för skriptet dnx.

Berörda API:er

None.