Gli script dnx ignorano la selezione dell'SDK di global.json

Gli dnx script e dnx.cmd non usano più il muxer .NET per selezionare la versione dell'SDK. Trovano invece l'SDK installato più recente e lo richiamano direttamente, ignorando qualsiasi global.json file nella directory di lavoro.

Versione introdotta

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

Comportamento precedente

In precedenza, gli script dnx richiamavano dotnet dnx, che si affidava al muxer .NET per selezionare la versione dell'SDK in base a qualsiasi file global.json presente nella directory di lavoro. Se global.json aveva bloccato una versione dell'SDK precedente a .NET 10, gli script hanno avuto esito negativo con il seguente errore:

Unrecognized command or argument 'execute'

A partire da .NET 10 SDK 10.0.302 (e versioni successive) e .NET 11 Preview 6, gli dnx script e dnx.cmd usano dotnet --list-sdks per identificare l'SDK installato più recente. Richiamano quindi dotnet exec <sdk-path>/dotnet.dll dnx direttamente, aggirando il muxer .NET e qualsiasi fissaggio dell'SDK global.json.

Tipo di cambiamento che interrompe la compatibilità

Questa modifica è una modifica funzionale.

Motivo della modifica

Alcuni comandi dell'interfaccia della riga di comando .NET, tra cui dnx, sono considerati funzionalità indipendenti dalla versione che devono essere sempre eseguite con l'SDK installato più recente. Fare affidamento su global.json significava che gli utenti che avevano bloccato una versione precedente dell'SDK per ridurre il rischio di modifiche che incidono sulla build compromettevano anche involontariamente dnx. Nelle cartelle in cui era bloccato un SDK precedente a .NET 10, il comando dnx non era disponibile, il che causava errori poco chiari e, in alcuni casi, timeout in strumenti come Copilot CLI.

Per ripristinare il comportamento precedente, in cui il muxer .NET e global.json controllano la selezione dell'SDK, eseguire dotnet dnx esplicitamente anziché lo script dnx.

Le API interessate

Nessuno.