Come posso tornare a fare riferimento ai pacchetti Nuget in packages.config dopo aver utilizzato i riferimenti ai pacchetti in un progetto .NET Standard?

Jul 21 2017

sfondo

Ho diverse librerie di codice C # che ho convertito di recente in .NET Standard 1.4 di destinazione, da utilizzare in un progetto Xamarin Forms e in molti progetti .NET Framework 4.6.1 legacy.

Inizialmente ho aggiunto i pacchetti Nuget alle librerie di classi .NET Standard utilizzando il riferimento ai pacchetti in stile File di progetto .

Dopo aver appreso di questo bug in cui i riferimenti a pacchetti transitivi da progetti .NET Standard non vengono risolti nei progetti .NET Framework precedenti , ho provato la soluzione alternativa di aggiungere <RestoreProjectStyle>PackageReference</RestoreProjectStyle>al progetto legacy csproj. I progetti legacy hanno continuato a non risolvere i riferimenti transitivi, ovvero la soluzione alternativa non ha funzionato.

Quindi, vorrei tornare al vecchio stile di riferimento ai pacchetti Nuget in un file packages.config nel mio progetto .NET Standard.

Passi che ho seguito:

  • Disinstallazione di tutti i pacchetti Nuget nel progetto .NET Standard, eccetto NETStandard.Library che non può essere disinstallato
    • L'impostazione predefinita di VS per Nuget consiste nell'aggiungere il primo pacchetto in una soluzione a packages.config
  • Reinstallazione di un pacchetto Nuget dalla Manage Nuget Packagesfinestra degli strumenti
    • Questo pacchetto è inserito in csproj come un file PackageReference, non in un file packages.config.

Qualcuno sa come posso forzare l'inserimento di nuovi pacchetti Nuget nel mio progetto .NET Standard 1.4 packages.configinvece che come riferimenti ai pacchetti?

Risposte

13 BenV May 23 2018 at 14:06

Oltre a rimuovere PackageReferences dal file di progetto, ho anche dovuto rimuovere i seguenti file dalla $ProjectDir\objdirectory:

  • Myproject.csproj.nuget.cache
  • Myproject.csproj.nuget.g.props
  • Myproject.csproj.nuget.g.targets
  • project.assets.json
2 PauloPozeti Nov 17 2018 at 14:28

Come tornare a packages.config

  1. Chiudi il progetto migrato.

  2. Copia il file di progetto e packages.config dal backup (in genere \ MigrationBackup \\) nella cartella del progetto. Elimina la cartella obj se esiste nella directory principale del progetto.

  3. Apri il progetto.

  4. Aprire la console di Gestione pacchetti utilizzando il comando di menu Strumenti> Gestione pacchetti NuGet> Console di Gestione pacchetti.

  5. Esegui il seguente comando nella console:

    update-package -reinstall

Fonte: https://docs.microsoft.com/en-us/nuget/reference/migrate-packages-config-to-package-reference#how-to-roll-back-to-packagesconfig

2 yww325 Jan 29 2019 at 19:59
  1. rimuovere tutto PackageReference nel file di progetto.
  2. eliminando tutte le cache in $ ProjectDir \ obj.
  3. aggiungere un file packages.config vuoto (con i tag root) al progetto.
  4. ricostruire il progetto. Visual Studio ti chiederà quindi cosa manca.
  5. quindi aggiungi il pacchetto della versione selezionata utilizzando nuget manager.
  6. ripetere i passaggi 4 e 5, VS aggiungerà il riferimento uno alla volta al file packages.config.
WesHaggard Jul 21 2017 at 22:36

Se non l'hai già fatto, devi rimuovere questa proprietà: <RestoreProjectStyle>PackageReference</RestoreProjectStyle>

Quindi rimuovi qualsiasi PackageReferences nel tuo progetto. Quindi, quando aggiungi i riferimenti al pacchetto nuget, dovrebbero andare nel file package.config.