Dela via


Viktig information om NuGet 2.8

Viktig information om | Viktig information om NuGet 2.8.1

NuGet 2.8 släpptes den 29 januari 2014.

Bekräftelser

  1. [Llewellyn Pritchard](https://www.codeplex.com/site/users/view/leppie) (@leppie)
    • [#3466](https://nuget.codeplex.com/workitem/3466) – När du packar paket kontrollerar du ID för beroendepaket.
  2. [Maarten Balliauw](https://www.codeplex.com/site/users/view/maartenba) (@maartenballiauw)
    • [#2379](https://nuget.codeplex.com/workitem/2379) – Ta bort $metadata-suffixet när autentiseringsuppgifterna för feeden sparas.
  3. [Filip De Vos](https://www.codeplex.com/site/users/view/FilipDeVos) (@foxtricks)
    • [#3538](http://nuget.codeplex.com/workitem/3538) – Stöd för att ange projektfil för kommandot nuget.exe update.
  4. [Juan Gonzalez](https://www.codeplex.com/site/users/view/jjgonzalez)
    • [#3536](http://nuget.codeplex.com/workitem/3536) - Ersättningssymboler har inte skickats med -IncludeReferencedProjects.
  5. [David Poole](https://www.codeplex.com/site/users/view/Sarkie) (@Sarkie_Dave)
    • [#3677](http://nuget.codeplex.com/workitem/3677) - Åtgärda nuget.push-kastet OutOfMemoryException vid push-överföring av stora paket.
  6. [Wouter Ouwens](https://www.codeplex.com/site/users/view/Despotes)
    • [#3666](http://nuget.codeplex.com/workitem/3666) – Åtgärda felaktig målsökväg när projektet refererar till ett annat CLI/C++-projekt.
  7. [Adam Ralph](http://www.codeplex.com/site/users/view/adamralph) (@adamralph)
    • [#3639](https://nuget.codeplex.com/workitem/3639) – Tillåt att paket installeras som utvecklingsberoenden som standard
  8. [David Fowler](https://www.codeplex.com/site/users/view/dfowler) (@davidfowl)
    • [#3717](https://nuget.codeplex.com/workitem/3717) – Ta bort implicita uppgraderingar till den senaste korrigeringsversionen
  9. [Gregory Vandenbrouck](https://www.codeplex.com/site/users/view/vdbg)
    • Flera felkorrigeringar och förbättringar för NuGet.Server, nuget.exe speglingskommandot och andra.
    • Detta arbete gjordes under flera månader, med Gregory arbetar med oss på rätt tidpunkt för att integrera i master för 2,8.

Korrigeringsmatchning för beroenden

När du löser paketberoenden har NuGet tidigare implementerat en strategi för att välja den lägsta huvud- och delpaketversionen som uppfyller beroendena för paketet. Till skillnad från huvudversionen och delversionen löstes dock korrigeringsversionen alltid till den högsta versionen. Även om beteendet var välmenande skapade det en brist på determinism för att installera paket med beroenden. Tänk på följande exempel:

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

I det här exemplet, även om Developer1 och Developer2 installerade PackageA@1.0.0, fick var och en en en annan version av PackageB. NuGet 2.8 ändrar det här standardbeteendet så att beroendematchningsbeteendet för korrigeringsversioner överensstämmer med beteendet för större och mindre versioner. I exemplet ovan installeras PackageB@1.0.0 som ett resultat av installationen av PackageA@1.0.0, oavsett den nyare korrigeringsversionen.

-Versionsberoende omkopplare

Även om NuGet 2.8 ändrar standardbeteendet för att lösa beroenden, lägger det också till mer exakt kontroll över beroendematchningsprocessen via -DependencyVersion-växeln i pakethanterarkonsolen. Omkopplaren gör det möjligt att lösa beroenden till lägsta möjliga version (standardbeteende), högsta möjliga version eller högsta möjliga mindre eller korrigeringsversion. Den här växeln fungerar bara för install-package i PowerShell-kommandot.

DependencyVersion Switch

DependencyVersion-attribut

Förutom den -DependencyVersion växeln som beskrivs ovan har NuGet också tillåtit möjligheten att ange ett nytt attribut i Nuget.Config-filen som definierar vad standardvärdet är, om -DependencyVersion-växeln inte anges i ett installationspaket. Det här värdet kommer också att respekteras av NuGet Package Manager-dialogrutan för eventuella installationspaketåtgärder. Om du vill ange det här värdet lägger du till attributet nedan i nuget.Config-filen:

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

Förhandsgranska NuGet-åtgärder med -whatif

Vissa NuGet-paket kan ha djupa beroendediagram, och det kan därför vara användbart under en installation, avinstallation eller uppdateringsåtgärd för att först se vad som kommer att hända. NuGet 2.8 lägger till Standard PowerShell--whatif växla till kommandona install-package, uninstall-package och update-package för att aktivera visualisering av hela stängningen av paket som kommandot ska tillämpas på. Om du till exempel kör install-package Microsoft.AspNet.WebApi -whatif i en tom ASP.NET ger webbprogrammet följande.

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

Nedgraderingspaket

Det är inte ovanligt att installera en förhandsversion av ett paket för att undersöka nya funktioner och sedan välja att återställa till den senaste stabila versionen. Före NuGet 2.8 var detta en process i flera steg för att avinstallera förhandsversionspaketet och dess beroenden och sedan installera den tidigare versionen. Med NuGet 2.8 återställer dock uppdateringspaketet nu hela paketstängningen (t.ex. paketets beroendeträd) till den tidigare versionen.

Utvecklingsberoendenheter

Många olika typer av funktioner kan levereras som NuGet-paket – inklusive verktyg som används för att optimera utvecklingsprocessen. Dessa komponenter, även om de kan vara avgörande för att utveckla ett nytt paket, bör inte betraktas som beroende av det nya paketet när det publiceras senare. NuGet 2.8 gör det möjligt för ett paket att identifiera sig i .nuspec filen som en developmentDependency. När dessa metadata har installerats läggs de också till i packages.config filen för projektet som paketet installerades i. packages.config När filen senare analyseras för NuGet-beroenden under nuget.exe packutesluter den de beroenden som markerats som utvecklingsberoenden.

Enskilda packages.config-filer för olika plattformar

När du utvecklar program för flera målplattformar är det vanligt att ha olika projektfiler för var och en av respektive byggmiljöer. Det är också vanligt att använda olika NuGet-paket i olika projektfiler, eftersom paket har olika stödnivåer för olika plattformar. NuGet 2.8 ger förbättrat stöd för det här scenariot genom att skapa olika packages.config filer för olika plattformsspecifika projektfiler.

Flera package.config-filer

Återställning till lokal cache

Även om NuGet-paket vanligtvis används från ett fjärrgalleri, till exempel NuGet-galleriet med hjälp av en nätverksanslutning, finns det många scenarier där klienten inte är ansluten. Utan en nätverksanslutning kunde NuGet-klienten inte installera paket – även om paketen redan fanns på klientens dator i den lokala NuGet-cachen. NuGet 2.8 lägger till automatisk cacheåterställning till pakethanterarkonsolen. När du till exempel kopplar från nätverkskortet och installerar jQuery visar konsolen följande:

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.

Återställningsfunktionen för cachen kräver inga specifika kommandoargument. Dessutom fungerar cacheåterställning för närvarande endast i pakethanterarkonsolen – beteendet fungerar för närvarande inte i dialogrutan för pakethanteraren.

NuGet-klientuppdateringar för WebMatrix

Tillsammans med NuGet 2.8 uppdaterades NuGet-tillägget för WebMatrix också med många av de viktigaste funktionerna som levereras med NuGet 2.5. Nya funktioner omfattar sådana som "Uppdatera alla", "Lägsta NuGet-version" och tillåter överskrivning av innehållsfiler.

Så här uppdaterar du NuGet Package Manager-tillägget i WebMatrix 3:

  1. Öppna WebMatrix 3
  2. Klicka på tilläggsikonen i menyfliksområdet
  3. Välj fliken Uppdateringar
  4. Klicka här om du vill uppdatera NuGet Package Manager till 2.5.0
  5. Stäng och starta om WebMatrix 3

Det här är NuGet-teamets första version av NuGet Package Manager-tillägget för WebMatrix. Koden har nyligen bidragits av Microsoft till det öppna källkodsprojektet NuGet. Tidigare var NuGet-integreringen inbyggd i WebMatrix, och den kunde inte uppdateras ur band från WebMatrix. Nu har vi möjlighet att uppdatera det ytterligare tillsammans med resten av NuGets klientverktyg.

Felkorrigeringar

En av de viktigaste felkorrigeringarna som gjordes var prestandaförbättringar i kommandot update-package -reinstall.

Förutom de här funktionerna och den ovan nämnda prestandakorrigeringen innehåller den här versionen av NuGet även många andra felkorrigeringar. Det fanns totalt 181 problem som togs upp i versionen. En fullständig lista över de arbetsobjekt som har åtgärdats i NuGet 2.8 finns i [NuGet Issue Tracker for this release](https://nuget.codeplex.com/workitem/list/advanced?release=NuGet%202.8&status=all).