Note sulla versione di NuGet 2.8

Note sulla versione | di NuGet 2.7.2 NuGet 2.8.1

NuGet 2.8 è stato rilasciato il 29 gennaio 2014.

Riconoscimenti

  1. [Llewellyn Pritchard](https://www.codeplex.com/site/users/view/leppie) (@leppie)
    • [#3466](https://nuget.codeplex.com/workitem/3466) - Durante la compressione dei pacchetti, verifica dell'ID dei pacchetti di dipendenza.
  2. [Maarten Balliauw](https://www.codeplex.com/site/users/view/maartenba) (@maartenballiauw)
    • [#2379](https://nuget.codeplex.com/workitem/2379) - Rimuovere il suffisso $metadata quando si persistenzano le credenziali del feed.
  3. [Filip De Vos](https://www.codeplex.com/site/users/view/FilipDeVos) (@foxtricks)
    • [#3538](http://nuget.codeplex.com/workitem/3538) - Supporto per specificare il file di progetto per il comando di aggiornamento nuget.exe.
  4. [Juan Gonzalez](https://www.codeplex.com/site/users/view/jjgonzalez)
    • [#3536](http://nuget.codeplex.com/workitem/3536) - Token di sostituzione non passati con -IncludeReferencedProjects.
  5. [David Poole](https://www.codeplex.com/site/users/view/Sarkie) (@Sarkie_Dave)
    • [#3677](http://nuget.codeplex.com/workitem/3677) - Correzione di nuget.push che genera OutOfMemoryException durante il push di un pacchetto di grandi dimensioni.
  6. [Wouter Ouwens](https://www.codeplex.com/site/users/view/Despotes)
    • [#3666](http://nuget.codeplex.com/workitem/3666) - Correzione del percorso di destinazione non corretto quando il progetto fa riferimento a un altro progetto CLI/C++.
  7. [Adam Ralph](http://www.codeplex.com/site/users/view/adamralph) (@adamralph)
    • [#3639](https://nuget.codeplex.com/workitem/3639) - Consenti l'installazione dei pacchetti come dipendenze di sviluppo per impostazione predefinita
  8. [David Fowler](https://www.codeplex.com/site/users/view/dfowler) (@davidfowl)
    • [#3717](https://nuget.codeplex.com/workitem/3717) - Rimuovere gli aggiornamenti impliciti alla versione più recente della patch
  9. [Gregory Vandenbrouck](https://www.codeplex.com/site/users/view/vdbg)
    • Diverse correzioni di bug e miglioramenti per NuGet.Server, il comando mirror nuget.exe e altri.
    • Questo lavoro è stato fatto per diversi mesi, con Gregory che lavora con noi sul giusto tempismo per integrarsi nel master per 2,8.

Risoluzione delle patch per le dipendenze

Quando si risolve le dipendenze dei pacchetti, NuGet ha storicamente implementato una strategia di selezione della versione del pacchetto principale e secondaria più bassa che soddisfa le dipendenze del pacchetto. A differenza della versione principale e secondaria, tuttavia, la versione della patch è stata sempre risolta nella versione più recente. Anche se il comportamento era ben intenzionato, ha creato una mancanza di determinismo per l'installazione di pacchetti con dipendenze. Si consideri l'esempio seguente:

PackageA@1.0.0 -[ >=1.0.0 ]-> PackageB@1.0.0

Developer1 installs PackageA@1.0.0: installed PackageA@1.0.0 and PackageB@1.0.0

PackageB@1.0.1 is published

Developer2 installs PackageA@1.0.0: installed PackageA@1.0.0 and PackageB@1.0.1

In questo esempio, anche se Developer1 e Developer2 hanno installato PackageA@1.0.0, ognuno di essi è finito con una versione diversa di PackageB. NuGet 2.8 modifica questo comportamento predefinito in modo che il comportamento di risoluzione delle dipendenze per le versioni patch sia coerente con il comportamento per le versioni principali e secondarie. Nell'esempio precedente, PackageB@1.0.0 verrà installato in seguito all'installazione di PackageA@1.0.0, indipendentemente dalla versione della patch più recente.

-DependencyVersion Switch

Anche se NuGet 2.8 modifica il comportamento predefinito per la risoluzione delle dipendenze, aggiunge anche un controllo più preciso sul processo di risoluzione delle dipendenze tramite l'opzione -DependencyVersion nella console di Gestione pacchetti. L'opzione consente di risolvere le dipendenze alla versione più bassa possibile (comportamento predefinito), alla versione più alta possibile o alla versione secondaria o patch più recente. Questa opzione funziona solo per install-package nel comando di PowerShell.

DependencyVersion Switch

Attributo DependencyVersion

Oltre all'opzione -DependencyVersion descritta in dettaglio in precedenza, NuGet ha consentito anche di impostare un nuovo attributo nel file Nuget.Config che definisce il valore predefinito, se l'opzione -DependencyVersion non è specificata in una chiamata di install-package. Questo valore verrà rispettato anche dalla finestra di dialogo di Gestione pacchetti NuGet per tutte le operazioni del pacchetto di installazione. Per impostare questo valore, aggiungere l'attributo seguente al file Nuget.Config:

<config>
    <add key="dependencyversion" value="Highest" />
</config>

Anteprima delle operazioni NuGet con -whatif

Alcuni pacchetti NuGet possono avere grafici di dipendenza profondi e, di conseguenza, può essere utile durante un'operazione di installazione, disinstallazione o aggiornamento per verificare prima cosa accadrà. NuGet 2.8 aggiunge lo standard PowerShell -whatif passare ai comandi install-package, uninstall-package e update-package per abilitare la visualizzazione dell'intera chiusura dei pacchetti a cui verrà applicato il comando. Ad esempio, l'esecuzione install-package Microsoft.AspNet.WebApi -whatif in un'applicazione Web vuota ASP.NET restituisce quanto segue.

PM> install-package Microsoft.AspNet.WebApi -whatif
Attempting to resolve dependency 'Microsoft.AspNet.WebApi.WebHost (≥ 5.0.0)'.
Attempting to resolve dependency 'Microsoft.AspNet.WebApi.Core (≥ 5.0.0)'.
Attempting to resolve dependency 'Microsoft.AspNet.WebApi.Client (≥ 5.0.0)'.
Attempting to resolve dependency 'Newtonsoft.Json (≥ 4.5.11)'.
Install Newtonsoft.Json 4.5.11
Install Microsoft.AspNet.WebApi.Client 5.0.0
Install Microsoft.AspNet.WebApi.Core 5.0.0
Install Microsoft.AspNet.WebApi.WebHost 5.0.0
Install Microsoft.AspNet.WebApi 5.0.0

Effettuare il downgrade del pacchetto

Non è raro installare una versione non definitiva di un pacchetto per analizzare le nuove funzionalità e quindi decidere di eseguire il rollback all'ultima versione stabile. Prima di NuGet 2.8, si tratta di un processo in più passaggi per disinstallare il pacchetto non definitiva e le relative dipendenze e quindi installare la versione precedente. Con NuGet 2.8, tuttavia, il pacchetto di aggiornamento eseguirà ora il rollback dell'intera chiusura del pacchetto (ad esempio, l'albero delle dipendenze del pacchetto) alla versione precedente.

Dipendenze di sviluppo

Molti tipi diversi di funzionalità possono essere distribuiti come pacchetti NuGet, inclusi gli strumenti usati per ottimizzare il processo di sviluppo. Questi componenti, mentre possono essere strumentali nello sviluppo di un nuovo pacchetto, non devono essere considerati una dipendenza del nuovo pacchetto quando viene pubblicato successivamente. NuGet 2.8 consente a un pacchetto di identificarsi nel .nuspec file come developmentDependency. Al momento dell'installazione, questi metadati verranno aggiunti anche al packages.config file del progetto in cui è stato installato il pacchetto. Quando il packages.config file viene analizzato in un secondo momento per le dipendenze NuGet durante nuget.exe pack, escluderà tali dipendenze contrassegnate come dipendenze di sviluppo.

Singoli file packages.config per piattaforme diverse

Quando si sviluppano applicazioni per più piattaforme di destinazione, è comune avere file di progetto diversi per ognuno dei rispettivi ambienti di compilazione. È anche comune usare pacchetti NuGet diversi in file di progetto diversi, perché i pacchetti hanno diversi livelli di supporto per piattaforme diverse. NuGet 2.8 offre un supporto migliorato per questo scenario creando file diversi packages.config per file di progetto specifici della piattaforma.

Multiple package.config files

Fallback nella cache locale

Anche se i pacchetti NuGet vengono in genere utilizzati da una raccolta remota, ad esempio la raccolta NuGet usando una connessione di rete, esistono molti scenari in cui il client non è connesso. Senza una connessione di rete, il client NuGet non è riuscito a installare correttamente i pacchetti, anche quando tali pacchetti erano già presenti nel computer del client nella cache NuGet locale. NuGet 2.8 aggiunge il fallback automatico della cache alla console di Gestione pacchetti. Ad esempio, quando si disconnette la scheda di rete e si installa jQuery, la console mostra quanto segue:

PM> Install-Package jquery
The source at nuget.org [https://www.nuget.org/api/v2/] is unreachable. Falling back to NuGet Local Cache at C:\Users\me\AppData\Local\NuGet\Cache
Installing 'jQuery 2.0.3'.
Successfully installed 'jQuery 2.0.3'.
Adding 'jQuery 2.0.3' to WebApplication18.
Successfully added 'jQuery 2.0.3' to WebApplication18.

La funzionalità di fallback della cache non richiede argomenti di comando specifici. Inoltre, il fallback della cache attualmente funziona solo nella console di Gestione pacchetti. Il comportamento attualmente non funziona nella finestra di dialogo di gestione pacchetti.

Aggiornamenti client NuGet WebMatrix

Insieme a NuGet 2.8, l'estensione NuGet per WebMatrix è stata aggiornata anche per includere molte delle principali funzionalità fornite con NuGet 2.5. Le nuove funzionalità includono quelle come "Aggiorna tutto", "Versione minima di NuGet" e consentendo la sovrascrittura dei file di contenuto.

Per aggiornare l'estensione Gestione pacchetti NuGet in WebMatrix 3:

  1. Aprire WebMatrix 3
  2. Fare clic sull'icona Estensioni sulla barra multifunzione
  3. Selezionare la scheda Aggiornamenti
  4. Fare clic per aggiornare il Gestione pacchetti NuGet alla versione 2.5.0
  5. Chiudere e riavviare WebMatrix 3

Questa è la prima versione del team NuGet dell'estensione nuGet Gestione pacchetti per WebMatrix. Il codice è stato recentemente contribuito da Microsoft nel progetto NuGet open source. In precedenza, l'integrazione di NuGet era incorporata in WebMatrix e non poteva essere aggiornata fuori banda da WebMatrix. Ora è possibile aggiornarla ulteriormente insieme al resto degli strumenti client di NuGet.

Correzioni di bug

Una delle principali correzioni di bug apportate è stata un miglioramento delle prestazioni nel comando update-package -reinstall.

Oltre a queste funzionalità e alla correzione delle prestazioni menzionata in precedenza, questa versione di NuGet include anche molte altre correzioni di bug. Nella versione sono stati risolti 181 problemi totali. Per un elenco completo degli elementi di lavoro corretti in NuGet 2.8, visualizzare .[NuGet Issue Tracker for this release](https://nuget.codeplex.com/workitem/list/advanced?release=NuGet%202.8&status=all)