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.