scripts dnx ignoram a seleção do SDK global.json

Os scripts dnx e dnx.cmd não usam mais o muxer do .NET para selecionar a versão do SDK. Em vez disso, eles encontram o SDK instalado mais recente e o invocam diretamente, o que ignora qualquer global.json arquivo no diretório de trabalho.

Versão introduzida

.NET 10 SDK 10.0.302, 10.0.400 e .NET 11 Versão Prévia 6

Comportamento anterior

Anteriormente, os scripts dnx invocavam dotnet dnx, que dependiam do muxer do .NET para selecionar a versão do SDK com base em qualquer arquivo global.json no diretório de trabalho. Se global.json fixou uma versão do SDK que antecedeu .NET 10, os scripts falharam com o seguinte erro:

Unrecognized command or argument 'execute'

A partir do SDK 10.0.302 do .NET 10 (e versões posteriores) e do .NET 11 Preview 6, os scripts dnx e dnx.cmd usam dotnet --list-sdks para identificar o SDK mais recente instalado. Eles então invocam dotnet exec <sdk-path>/dotnet.dll dnx diretamente, ignorando o multiplexador .NET e qualquer fixação de SDK global.json.

Tipo de mudança disruptiva

Esta é uma alteração comportamental.

Motivo da alteração

Alguns comandos da CLI .NET, incluindodnx, são considerados recursos independentes de versão que sempre devem ser executados com o SDK instalado mais recente. Depender de global.json significava que os usuários que fixavam uma versão mais antiga do SDK para reduzir o risco de alterações que afetam a compilação também quebravam inadvertidamente dnx. Em pastas onde um SDK anterior ao .NET 10 estava fixado, o comando dnx não estava disponível, o que causava erros confusos e, em alguns casos, timeouts em ferramentas como a CLI do Copilot.

Para restaurar o comportamento anterior, em que o .NET muxer e global.json controlam a seleção do SDK, execute dotnet dnx explicitamente em vez do script dnx.

APIs afetadas

Nenhum.