Come posso tornare a fare riferimento ai pacchetti Nuget in packages.config dopo aver utilizzato i riferimenti ai pacchetti in un progetto .NET Standard?
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.
- Questo pacchetto è inserito in csproj come un file
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
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
Come tornare a packages.config
Chiudi il progetto migrato.
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.
Apri il progetto.
Aprire la console di Gestione pacchetti utilizzando il comando di menu Strumenti> Gestione pacchetti NuGet> Console di Gestione pacchetti.
Esegui il seguente comando nella console:
update-package -reinstall
- rimuovere tutto PackageReference nel file di progetto.
- eliminando tutte le cache in $ ProjectDir \ obj.
- aggiungere un file packages.config vuoto (con i tag root) al progetto.
- ricostruire il progetto. Visual Studio ti chiederà quindi cosa manca.
- quindi aggiungi il pacchetto della versione selezionata utilizzando nuget manager.
- ripetere i passaggi 4 e 5, VS aggiungerà il riferimento uno alla volta al file packages.config.
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.