Il ripristino non cerca nella cartella dei pacchetti globali una versione più recente del pacchetto

Quando una dipendenza PackageReference o di pacchetto richiede una versione del pacchetto che non esiste, il ripristino di NuGet cerca la versione più bassa superiore alla versione richiesta. Il ripristino di NuGet non include più in tale ricerca le versioni presenti nella cartella globale dei pacchetti.

Versione introdotta

.NET 11 RC 1

Comportamento precedente

In precedenza, quando il ripristino non riusciva a trovare la versione richiesta, cercava sia le origini del pacchetto che la cartella dei pacchetti globali per la versione "migliore successiva", ovvero la versione più bassa che è superiore alla versione richiesta. Ripristinata quella versione, è stato generato un avviso NU1603. Se non è stata trovata alcuna versione successiva, il ripristino ha segnalato un errore NU1102.

Origine del pacchetto Cartella dei pacchetti globali Versione richiesta Versione selezionata Esito del ripristino
1.0.0, 2.0.0 1.5.0 1.1.0 1.5.0 Avviso NU1603
1.0.0 1.5.0 1.1.0 1.5.0 Avviso NU1603

Nuovo comportamento

A partire da .NET 11, il ripristino cerca solo le origini dei pacchetti per la versione "successiva migliore". Poiché la cartella dei pacchetti globali è esclusa dalla ricerca, il ripristino potrebbe selezionare una versione successiva rispetto a prima o non riuscire con un errore NU1102 se nessuna origine pacchetto ha una versione successiva.

Sorgente del pacchetto Cartella globale dei pacchetti Versione richiesta Versione selezionata Esito del ripristino
1.0.0, 2.0.0 1.5.0 1.1.0 2.0.0 Avviso NU1603
1.0.0 1.5.0 1.1.0 non applicabile Errore NU1102

Se la cartella dei pacchetti globali contiene la versione richiesta esatta, il ripristino usa tale versione, anche se tale versione non è presente nell'origine del pacchetto. Questo comportamento è rimasto inalterato.

Tipo di modifica che causa un'interruzione

Questa modifica può influire sulla compatibilità dell'origine.

Motivo della modifica

Il ripristino è ora più deterministico e ripetibile. Per motivi di prestazioni, NuGet non convalida che i pacchetti nella cartella pacchetti globali corrispondano ai pacchetti nelle origini del pacchetto. Tuttavia, il ripristino seleziona ora la stessa versione del pacchetto in computer diversi, in cui la cartella dei pacchetti globali potrebbe contenere versioni diverse.

Fare riferimento solo alle versioni dei pacchetti esistenti nelle origini del pacchetto. Questa procedura garantisce che la versione selezionata durante il ripristino non cambi nel tempo, perché le nuove versioni vengono pubblicate nelle origini del pacchetto.

Per altre informazioni, vedere Procedure consigliate per una catena di approvvigionamento software sicura.

Le API interessate

None.