Delen via


Releaseopmerkingen voor NuGet 2.8

Releaseopmerkingen voor | Releaseopmerkingen voor NuGet 2.8.1

NuGet 2.8 is uitgebracht op 29 januari 2014.

Dankbetuigingen

  1. [Llewellyn Pritchard](https://www.codeplex.com/site/users/view/leppie) (@leppie)
    • [#3466](https://nuget.codeplex.com/workitem/3466) - Bij het inpakken van pakketten controleert u de id van afhankelijkheidspakketten.
  2. [Maarten Balliauw](https://www.codeplex.com/site/users/view/maartenba) (@maartenballiauw)
    • [#2379](https://nuget.codeplex.com/workitem/2379) - Verwijder het achtervoegsel $metadata bij het behouden van feedreferenties.
  3. [Filip De Vos](https://www.codeplex.com/site/users/view/FilipDeVos) (@foxtricks)
    • [#3538](http://nuget.codeplex.com/workitem/3538) - Ondersteuning voor het opgeven van een projectbestand voor het updatecommando nuget.exe.
  4. [Juan Gonzalez](https://www.codeplex.com/site/users/view/jjgonzalez)
    • [#3536](http://nuget.codeplex.com/workitem/3536) - Vervangende tokens niet doorgegeven met -IncludeReferencedProjects.
  5. [David Poole](https://www.codeplex.com/site/users/view/Sarkie) (@Sarkie_Dave)
    • [#3677](http://nuget.codeplex.com/workitem/3677) - Corrigeer nuget.push die OutOfMemoryException genereert bij het pushen van een groot pakket.
  6. [Wouter Ouwens](https://www.codeplex.com/site/users/view/Despotes)
    • [#3666](http://nuget.codeplex.com/workitem/3666) - Corrigeer een onjuist doelpad wanneer project verwijst naar een ander CLI/C++-project.
  7. [Adam Ralph](http://www.codeplex.com/site/users/view/adamralph) (@adamralph)
    • [#3639](https://nuget.codeplex.com/workitem/3639) - Toestaan dat pakketten standaard worden geïnstalleerd als ontwikkelingsafhankelijkheden
  8. [David Fowler](https://www.codeplex.com/site/users/view/dfowler) (@davidfowl)
    • [#3717](https://nuget.codeplex.com/workitem/3717) - Impliciete upgrades verwijderen naar de nieuwste patchversie
  9. [Gregory Vandenbrouck](https://www.codeplex.com/site/users/view/vdbg)
    • Verschillende bugfixes en verbeteringen voor NuGet.Server, de nuget.exe mirror-opdracht en andere.
    • Dit werk is gedurende enkele maanden gedaan, samenwerkend met Gregory aan de juiste timing om in master te integreren voor 2.8.

Patchoplossing voor afhankelijkheden

Bij het oplossen van pakketafhankelijkheden heeft NuGet in het verleden een strategie geïmplementeerd om de laagste primaire en secundaire pakketversie te selecteren die voldoet aan de afhankelijkheden van het pakket. In tegenstelling tot de primaire en secundaire versie werd de patchversie echter altijd omgezet in de hoogste versie. Hoewel het gedrag goed bedoeld was, is er een gebrek aan determinisme ontstaan voor het installeren van pakketten met afhankelijkheden. Bekijk het volgende voorbeeld:

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 dit voorbeeld, hoewel Developer1 en Developer2 PackageA@1.0.0 geïnstalleerd hebben, verkregen ze uiteindelijk verschillende versies van PackageB. NuGet 2.8 wijzigt dit standaardgedrag zodanig dat het gedrag van de afhankelijkheidsoplossing voor patchversies consistent is met het gedrag voor primaire en secundaire versies. In het bovenstaande voorbeeld wordt PackageB@1.0.0 geïnstalleerd als gevolg van het installeren van PackageA@1.0.0, ongeacht de nieuwere patchversie.

-DependencyVersion-schakelaar

Hoewel NuGet 2.8 het standaardgedrag voor het oplossen van afhankelijkheden wijzigt, wordt er ook nauwkeuriger controle toegevoegd over het afhankelijkheidsoplossingsproces via de -DependencyVersion-switch in de package manager-console. Met de switch kunnen afhankelijkheden worden omgezet in de laagst mogelijke versie (standaardgedrag), de hoogst mogelijke versie of de hoogste secundaire of patchversie. Deze switch werkt alleen voor het installatiepakket in de PowerShell-opdracht.

DependencyVersion-switch

Attribuut DependencyVersion

Naast de -DependencyVersion-switch die hierboven wordt beschreven, heeft NuGet ook de mogelijkheid gegeven om een nieuw kenmerk in te stellen in het Nuget.Config-bestand dat definieert wat de standaardwaarde is, als de -DependencyVersion switch niet is opgegeven in een aanroep van install-package. Deze waarde wordt ook gerespecteerd door het dialoogvenster NuGet Package Manager voor alle installatiewerkzaamheden met pakketten. Als u deze waarde wilt instellen, voegt u het onderstaande kenmerk toe aan uw Nuget.Config-bestand:

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

Preview van NuGet-bewerkingen met -whatif

Sommige NuGet-pakketten kunnen uitgebreide afhankelijkheidsgrafieken hebben en daarom kan het handig zijn tijdens een installatie-, verwijder- of updatebewerking om eerst te zien wat er gebeurt. NuGet 2.8 voegt de standaard PowerShell--whatif-switch toe aan de opdrachten install-package, uninstall-package en update-package om de volledige sluiting van pakketten waarop de opdracht wordt toegepast te visualiseren. Als u bijvoorbeeld een lege ASP.NET-webtoepassing uitvoert install-package Microsoft.AspNet.WebApi -whatif , levert dit het volgende op.

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

Downgradepakket

Het is niet ongebruikelijk om een voorlopige versie van een pakket te installeren om nieuwe functies te onderzoeken en vervolgens terug te keren naar de laatste stabiele versie. Vóór NuGet 2.8 was dit een proces met meerdere stappen voor het verwijderen van het prerelease-pakket en de bijbehorende afhankelijkheden en het installeren van de eerdere versie. Met NuGet 2.8 wordt het updatepakket nu echter de volledige pakketsluiting (bijvoorbeeld de afhankelijkheidsstructuur van het pakket) teruggedraaid naar de vorige versie.

Ontwikkelingsafhankelijkheden

Veel verschillende soorten mogelijkheden kunnen worden geleverd als NuGet-pakketten, inclusief hulpprogramma's die worden gebruikt voor het optimaliseren van het ontwikkelingsproces. Deze onderdelen kunnen instrumenteel zijn bij het ontwikkelen van een nieuw pakket, maar mogen niet worden beschouwd als een afhankelijkheid van het nieuwe pakket wanneer het later wordt gepubliceerd. Met NuGet 2.8 kan een pakket zichzelf in het .nuspec bestand identificeren als een developmentDependency. Wanneer deze metagegevens zijn geïnstalleerd, worden deze metagegevens ook toegevoegd aan het packages.config bestand van het project waarin het pakket is geïnstalleerd. Wanneer dat packages.config bestand later tijdens nuget.exe pack wordt geanalyseerd op NuGet-afhankelijkheden, zullen de afhankelijkheden die zijn gemarkeerd als ontwikkelingsafhankelijkheden worden uitgesloten.

Afzonderlijke packages.config-bestanden voor verschillende platforms

Bij het ontwikkelen van toepassingen voor meerdere doelplatforms is het gebruikelijk om verschillende projectbestanden te hebben voor elk van de respectieve buildomgevingen. Het is ook gebruikelijk om verschillende NuGet-pakketten in verschillende projectbestanden te gebruiken, omdat pakketten verschillende ondersteuningsniveaus hebben voor verschillende platforms. NuGet 2.8 biedt verbeterde ondersteuning voor dit scenario door verschillende packages.config platformspecifieke projectbestanden te maken.

Meerdere package.config-bestanden

Terugval naar lokale cache

Hoewel NuGet-pakketten doorgaans worden gebruikt vanuit een externe galerie, zoals de NuGet-galerie met behulp van een netwerkverbinding, zijn er veel scenario's waarin de client niet is verbonden. Zonder een netwerkverbinding kon de NuGet-client geen pakketten installeren, zelfs niet wanneer deze pakketten zich al op de computer van de client in de lokale NuGet-cache bevonden. NuGet 2.8 voegt automatische terugval van cache toe aan de package manager-console. Wanneer u bijvoorbeeld de verbinding met de netwerkadapter verbreekt en jQuery installeert, ziet u in de console het volgende:

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.

Voor de terugvalfunctie van de cache zijn geen specifieke opdrachtargumenten vereist. Bovendien werkt de cache-achtervang momenteel alleen in de Package Manager-console; dit functioneert momenteel niet in het pakketbeheer-dialoogvenster.

Updates voor WebMatrix NuGet-client

Samen met NuGet 2.8 is de NuGet-extensie voor WebMatrix ook bijgewerkt met veel van de belangrijkste functies die worden geleverd met NuGet 2.5. Nieuwe mogelijkheden zijn onder andere de functies 'Alles bijwerken', 'Minimale NuGet-versie' en het toestaan van het overschrijven van inhoudsbestanden.

Uw NuGet Package Manager-extensie bijwerken in WebMatrix 3:

  1. WebMatrix 3 openen
  2. Klik op het pictogram Extensies op het lint
  3. Het tabblad Updates selecteren
  4. Klik hier om NuGet Package Manager bij te werken naar 2.5.0
  5. WebMatrix 3 sluiten en opnieuw starten

Dit is de eerste uitgave van de NuGet-team van de NuGet Package Manager-extensie voor WebMatrix. De code is onlangs door Microsoft bijgedragen aan het opensource NuGet-project. Voorheen werd de NuGet-integratie ingebouwd in WebMatrix en kon deze niet buiten WebMatrix om worden bijgewerkt. We hebben nu de mogelijkheid om deze verder bij te werken naast de rest van de clienthulpprogramma's van NuGet.

Oplossingen voor bugs

Een van de belangrijkste opgeloste fouten is prestatieverbetering in de opdracht updatepakket -reinstall.

Naast deze functies en de bovengenoemde prestatiecorrectie bevat deze release van NuGet ook veel andere bugfixes. Er zijn 181 totaalproblemen opgelost in de release. Voor een volledige lijst met de werkitems die zijn opgelost in NuGet 2.8, kunt u de [NuGet Issue Tracker for this release](https://nuget.codeplex.com/workitem/list/advanced?release=NuGet%202.8&status=all) bekijken.