Manifesti degli strumenti nella cartella radice

.NET non cerca più i file manifesto degli strumenti locali nella cartella radice in Windows, a meno che non ne venga eseguito l'override tramite la variabile di ambiente DOTNET_TOOLS_ALLOW_MANIFEST_IN_ROOT. Questa modifica non influisce su Linux o macOS.

Comportamento precedente

In precedenza, gli strumenti locali di .NET SDK controllavano la cartella radice in tutte le piattaforme durante la ricerca di un manifesto degli strumenti. La ricerca proseguiva dalla directory corrente lungo l'albero di directory fino alla cartella radice fin quando non veniva trovato un manifesto. A ogni livello, .NET cercava il manifesto degli strumenti, denominato dotnet-tools.json, in una sottocartella con estensione config. In un sistema Windows, se non veniva trovato nessun altro manifesto degli strumenti, alla fine l'SDK lo cercava in C:\.config\dotnet-tools.json.

Nuovo comportamento

.NET non esegue più ricerche nella cartella radice dell'albero di directory corrente per impostazione predefinita in Windows, a meno che non ne venga eseguito l'override tramite la variabile di ambiente DOTNET_TOOLS_ALLOW_MANIFEST_IN_ROOT. DOTNET_TOOLS_ALLOW_MANIFEST_IN_ROOT è impostato su false per impostazione predefinita.

Versione introdotta

  • .NET SDK 7.0.3xx
  • .NET SDK 7.0.1xx
  • .NET SDK 6.0.4xx
  • .NET SDK 6.0.3xx
  • .NET SDK 6.0.1xx
  • .NET SDK 3.1.4xx

Tipo di modifica di rilievo

Questa è una modifica funzionale.

Motivo della modifica

Questa modifica è stata apportata per risolvere un problema di sicurezza. Poiché tutti gli utenti possono creare file e cartelle nella directory C:\ in Windows, gli utenti malintenzionati con privilegi limitati possono assumere il controllo del file C:\.config\dotnet-tools.json. Quando un amministratore esegue un comando dello strumento dotnet, lo strumento potrebbe in teoria leggere informazioni di configurazione dannose dal file e scaricare ed eseguire strumenti dannosi.

Per disabilitare il nuovo comportamento, impostare la variabile di ambiente DOTNET_TOOLS_ALLOW_MANIFEST_IN_ROOT su true o 1.

Vedi anche