Condividi tramite


Avviso NuGet NU1605

Esempio 1

Downgrade del pacchetto rilevato: 'PackageB' da 4.0.0 a 3.5.0. Fare riferimento al pacchetto direttamente dal progetto per selezionare una versione diversa.
    'Project' -> 'PackageA' 4.0.0 -> 'PackageB' (>= 4.0.0)
    'Project' -> 'PackageB' (>= 3.5.0)

Problema

Un pacchetto di dipendenza ha specificato un vincolo di versione per una versione successiva di un pacchetto rispetto al ripristino risolto. Ciò è dovuto alla regola direct-dependency-wins: durante la risoluzione dei pacchetti, la versione diretta del pacchetto nel sottografo sostituirà quella dei pacchetti distanti con lo stesso ID.

Soluzione

Per il progetto che presenta l'avviso di ripristino, aggiungere un riferimento al pacchetto alla versione successiva del pacchetto.

Nell'esempio precedente è necessario modificare il riferimento al pacchetto in PackageB 4.0.0:

'PackageA' 4.0.0 -> 'PackageB' 4.0.0
'PackageB' 4.0.0

Esempio 2

Rilevato downgrade del pacchetto: 'PackageC' da 2.0.0 a 1.1.0. Fare riferimento al pacchetto direttamente dal progetto per selezionare una versione diversa.
    'Project' -> 'PackageA' 1.0.0 -> 'PackageB' 2.0.0 ->'PackageC' (>= 2.0.0)
    'Project' -> 'PackageA' 1.0.0 -> 'PackageC' (>= 1.1.0)

Problema

Un pacchetto di dipendenza ha specificato un vincolo di versione per una versione successiva di un pacchetto rispetto al ripristino risolto. Ciò è dovuto alla regola direct-dependency-wins: durante la risoluzione dei pacchetti, NuGet tenta di rispettare la finalità dell'autore del pacchetto. L'autore di PackageA ha eseguito il downgrade esplicito alla PackageC versione 1.1.0 dalla PackageC versione 2.0.0.

Soluzione

Per il progetto che presenta l'avviso di ripristino, aggiungere un riferimento al pacchetto alla versione successiva del pacchetto.

Nell'esempio precedente è necessario modificare il riferimento al pacchetto in PackageC 2.0.0:

'PackageA' 4.0.0 -> 'PackageB' 4.0.0
'PackageB' 4.0.0

Esempio 3

Downgrade del pacchetto rilevato: System.IO.FileSystem.Primitives da 4.3.0 a 4.0.1. Fare riferimento al pacchetto direttamente dal progetto per selezionare una versione diversa.
Project - System.IO.FileSystem 4.0.1 - runtime.win.System.IO.FileSystem 4.3.0 -> System.IO.FileSystem.Primitives (>= 4.3.0) Project -> System.IO.FileSystem 4.0.1 -> System.IO.FileSystem.Primitives (>= 4.0.1)
>>

Problema

Alcune combinazioni di pacchetti forniti con .NET Core 1.0 e 1.1 non sono compatibili tra loro quando si fa riferimento insieme in un progetto .NET Core 3.0 o versione successiva e viene specificato runtimeIdentifier. I pacchetti problematici iniziano in genere con System. o Microsoft.e hanno numeri di versione compresi tra 4.0.0 e 4.3.1. In questo caso, il messaggio di downgrade avrà un pacchetto che inizia con runtime.<RID> nella catena di dipendenze.

Soluzione

Per risolvere questo problema, aggiungere il packageReference seguente:

<PackageReference Include="Microsoft.NETCore.Targets" Version="3.0.0" PrivateAssets="all" />

È possibile scegliere di usare la version corrispondenza con la versione principale dell'SDK.

Esempio 4

Downgrade del pacchetto rilevato: Microsoft.NETCore.App dalla versione 2.1.8 alla versione 2.1.0. Fare riferimento al pacchetto direttamente dal progetto per selezionare una versione diversa.
    test -> mvc -> Microsoft.NETCore.App (>= 2.1.8)
    test -> Microsoft.NETCore.App (>= 2.1.0)

Problema

Il progetto mvc ha specificato un vincolo di versione per una versione successiva di un pacchetto rispetto al ripristino risolto. Ciò è dovuto alla regola direct-dependency-wins : quando si risolvono i pacchetti, la versione del pacchetto a cui si fa riferimento direttamente nel grafico eseguirà l'override di quella del pacchetto distante con lo stesso ID.

Soluzione

Questo errore specifico (con pacchetto Microsoft.NETCore.App) viene migliorato spostando .NET Core SDK alla versione 2.2.100 o successiva. Microsoft.NETCore.App è un pacchetto a cui fa riferimento automaticamente .NET Core SDK prima della versione 3.0.100. Vedere anche Roll forward del runtime di distribuzione indipendente.

Nota

Anche se NU1605 è considerato un avviso dagli strumenti NuGet, .NET SDK opta per considerare questo avviso come un errore tramite WarningsAsErrors. Il progetto potrebbe aggiornare questo avviso a un errore impostando TreatWarningsAsErrors su true. Anche se non è consigliabile, poiché è più probabile che si verifichino problemi di runtime, è possibile scegliere di eliminare questo avviso.

Suggerimento

Soluzione alternativa: NuGetSolver è un'estensione di Visual Studio sviluppata da Microsoft DevLabs, progettata per facilitare la risoluzione dei conflitti di dipendenza. Automatizza il processo di identificazione e risoluzione di questi problemi. Per altri dettagli, visitare la pagina NuGetSolver in Visual Studio Marketplace e si vuole ricevere commenti e suggerimenti sull'esperienza.