Delen via


Releaseopmerkingen voor NuGet 2.7

Releaseopmerkingen voor NuGet 2.6.1 voor WebMatrix | Releaseopmerkingen voor NuGet 2.7.1

NuGet 2.7 werd uitgebracht op 22 augustus 2013.

Dankbetuigingen

We willen de volgende externe inzenders bedanken voor hun aanzienlijke bijdragen aan NuGet 2.7:

  1. [Mike Roth](http://www.codeplex.com/site/users/view/mxrss) (@mxrss)
    • Licentie-URL weergeven bij het weergeven van pakketten en uitgebreidheid wordt gedetailleerd weergegeven.
  2. [Adam Ralph](http://www.codeplex.com/site/users/view/adamralph) (@adamralph)
    • [#1956](http://nuget.codeplex.com/workitem/1956) - Voeg de developmentDependency-attribuut toe aan packages.config en gebruik het in de pack-opdracht om alleen runtime-pakketten op te nemen.
  3. [Rafael Nicoletti](http://www.codeplex.com/site/users/view/tkrafael) (@tkrafael)
    • Vermijd dubbele Properties-sleutel in de nuget.exe pack-opdracht.
  4. [Ben Phegan](http://www.codeplex.com/site/users/view/benphegan) (@BenPhegan)
    • [#2610](http://nuget.codeplex.com/workitem/2610) - Vergroot de cachegrootte van de machine tot 200.
  5. [Slava Trenogin](http://www.codeplex.com/site/users/view/derigel) (@derigel)
    • [#3217](http://nuget.codeplex.com/workitem/3217) - NuGet-dialoogvenster herstellen met updates op het verkeerde tabblad
    • Fix Project.TargetFramework kan null zijn in ProjectManager
    • [#3248](http://nuget.codeplex.com/workitem/3248) - Fix SharedPackageRepository FindPackage/FindPackagesById zal falen bij niet-bestaand pakket-ID
  6. [Kevin Boyle](http://www.codeplex.com/site/users/view/KevinBoyleRG) (@kevfromireland)
    • [#3234](http://nuget.codeplex.com/workitem/3234) - Ondersteuning voor Nomad-project inschakelen
  7. [Corin Blaikie](http://www.codeplex.com/site/users/view/corinblaikie) (@corinblaikie)
    • [#3252](http://nuget.codeplex.com/workitem/3252) - Los het probleem op waarbij de pushopdracht mislukt met als afsluitcode 0 wanneer het bestand niet bestaat.
  8. [Martin Veselý](http://www.codeplex.com/site/users/view/veselkamartin)
    • [#3226](http://nuget.codeplex.com/workitem/3226) - Fout opgelost met Add-BindingRedirect opdracht wanneer een project verwijst naar een databaseproject.
  9. [Miroslav Bajtos](http://www.codeplex.com/site/users/view/miroslavbajtos) (@bajtos)
    • [#2891](http://nuget.codeplex.com/workitem/2891) - Los de fout op waarbij het parseren van jokertekens in het 'exclude'-kenmerk van nuget.pack onjuist gebeurt.
  10. [Justin Dearing](http://www.codeplex.com/site/users/view/zippy1981) (@zippy1981)
    • [#3307](http://nuget.codeplex.com/workitem/3307) - Opgeloste fout NuGet.targets geeft $(Platform) niet door aan nuget.exe bij het herstellen van pakketten.
  11. [Brian Federici](http://www.codeplex.com/site/users/view/benerdin)
    • [#3294](http://nuget.codeplex.com/workitem/3294) - Bug opgelost in de nuget.exe pakketopdracht waardoor het toevoegen van bestanden met dezelfde naam, maar met verschillende hoofdletters, uiteindelijk de uitzondering 'Item bestaat al' veroorzaakt.
  12. [Daniel Cazzulino](http://www.codeplex.com/site/users/view/dcazzulino) (@kzu)
    • [#2990](http://nuget.codeplex.com/workitem/2990) - De eigenschap Versie toevoegen aan de klasse NetPortableProfile.
  13. [David Simner](https://www.codeplex.com/site/users/view/DavidSimner)
    • [#3460](https://nuget.codeplex.com/workitem/3460) - Bug NullReferenceException oplossen als requireApiKey = true, maar de header X-NUGET-APIKEY niet aanwezig is
  14. [Michael Friis](https://www.codeplex.com/site/users/view/friism) (@friism)
    • [#3278](https://nuget.codeplex.com/workitem/3278) - Corrigeer nuGet.Build-doelenbestand zodat het correct werkt op MonoDevelop
  15. [Pranav Krishnamoorthy](https://www.codeplex.com/site/users/view/pranavkm) (@pranav_km)
    • De prestaties van de opdracht Herstellen verbeteren door parallelle uitvoering te verhogen

Belangrijke functies in de release

NuGet 2.7 introduceert een nieuwe benadering van pakketherstel en overkomt ook een grote horde: Toestemming voor pakketherstel is nu standaard ingeschakeld. De combinatie van de nieuwe benadering en de impliciete toestemming vereenvoudigen pakketherstelscenario's drastisch.

Met NuGet-versies 2.0, 2.1, 2.2, 2.5 en 2.6 moesten gebruikers expliciet toestaan dat NuGet ontbrekende pakketten downloadt tijdens de build. Als deze toestemming niet expliciet is gegeven, kunnen oplossingen waarvoor pakketherstel is ingeschakeld, niet bouwen totdat de gebruiker toestemming had gegeven.

Vanaf NuGet 2.7 is toestemming voor pakketherstel standaard INGESCHAKELD, terwijl gebruikers zich expliciet kunnen afmelden voor pakketherstel, indien gewenst, met behulp van het selectievakje in de instellingen van NuGet in Visual Studio. Deze wijziging voor impliciete toestemming is van invloed op NuGet in de volgende omgevingen:

  • Visual Studio 2013 Preview
  • Visual Studio 2012
  • Visual Studio 2010
  • hulpprogramma voor nuget.exe Command-Line

Automatische Package Restore in Visual Studio

Vanaf NuGet 2.7 downloadt NuGet automatisch ontbrekende pakketten tijdens de build in Visual Studio, zelfs als pakketherstel niet expliciet is ingeschakeld voor de oplossing. Deze automatische pakketherstel vindt plaats in Visual Studio wanneer u een project of oplossing bouwt, maar voordat MSBuild wordt aangeroepen. Dit levert enkele belangrijke voordelen op:

  1. U hoeft de optie "NuGet-pakketherstel inschakelen" niet meer te gebruiken in uw oplossing.
  2. Projecten hoeven niet te worden gewijzigd en NuGet brengt geen wijzigingen aan in uw project om ervoor te zorgen dat pakketherstel is ingeschakeld
  3. Alle NuGet-pakketten, inclusief de pakketten die MSBuild-import bevatten voor props/doelen-bestanden, worden hersteld voordat MSBuild wordt aangeroepen, zodat deze props/doelen correct worden herkend tijdens de build

Als u Automatisch pakket herstellen in Visual Studio wilt gebruiken, hoeft u slechts één (in)actie te ondernemen:

  1. Controleer uw packages map niet

Er zijn verschillende manieren om uw packages map weg te laten uit broncodebeheer. Zie het onderwerp Pakketten en Broncodebeheer voor meer informatie.

Hoewel alle gebruikers impliciet zijn aangemeld voor automatische toestemming voor pakketherstel, kunt u zich eenvoudig afmelden via de Package Manager-instellingen in Visual Studio.

Package Manager-instellingen

Vereenvoudigd pakket herstellen vanuit de Command-Line

NuGet 2.7 introduceert een nieuwe functie voor nuget.exe: nuget.exe restore

Met deze nieuwe opdracht Herstellen kunt u eenvoudig alle pakketten voor een oplossing met één opdracht herstellen door een oplossingsbestand of map als argument te accepteren. Bovendien wordt dit argument geïmpliceerd wanneer er slechts één oplossing in de huidige map is. Dit betekent dat het volgende werkt vanuit een map die één oplossingsbestand bevat (MySolution.sln):

  1. nuget.exe MySolution.sln herstellen
  2. nuget.exe herstellen .
  3. nuget.exe restore

Met de opdracht Herstellen wordt het oplossingsbestand geopend en worden alle projecten in de oplossing gevonden. Van daaruit vindt u de packages.config bestanden voor elk van de projecten en herstelt u alle gevonden pakketten. Het herstelt ook pakketten op oplossingsniveau die in het .nuget\packages.config bestand zijn gevonden. Meer informatie over de nieuwe opdracht 'Herstellen' vindt u in de Opdrachtregelreferentie.

De nieuwe werkstroom voor pakketherstel

We zijn verheugd over deze wijzigingen in Package Restore, omdat er een nieuwe werkstroom wordt geïntroduceerd. Als u uw pakketten wilt weglaten uit broncodebeheer, hoeft u de packages map niet door te voeren. Visual Studio-gebruikers die de oplossing openen en bouwen, zien de pakketten automatisch worden hersteld. Voor opdrachtregel-builds kunt u gewoon nuget.exe restore uitvoeren voordat u msbuild uitvoert. U hoeft zich niet meer te herinneren om "NuGet pakket-herstel inschakelen" te gebruiken voor uw oplossing, en we hoeven uw projecten niet meer aan te passen om de build te veranderen. En dit levert ook een veel verbeterde ervaring op voor pakketten die MSBuild-import bevatten, met name voor import die is toegevoegd via de recente functie van NuGet voor het automatisch importeren van props/doelen bestanden uit de map \build.

Naast het werk dat we zelf hebben gedaan, werken we ook samen met enkele belangrijke partners om deze nieuwe aanpak af te ronden. We hebben nog geen concrete tijdlijnen voor een van deze, maar elke partner is net zo enthousiast als we over de nieuwe aanpak.

  • Team Foundation Service - Ze werken eraan om de oproep naar nuget.exe restore te integreren in de standaard buildscenario's.
  • Windows Azure-websites: ze werken eraan om u in staat te stellen uw project naar Azure te verplaatsen en nuget.exe restore aangeroepen voordat uw website wordt gebouwd.
  • TeamCity - Ze werken hun NuGet Installer-invoegtoepassing voor TeamCity 8.x bij
  • AppHarbor - Ze werken eraan om het mogelijk te maken dat u uw repository naar AppHarbor kunt pushen en nuget.exe restore wordt aangeroepen voordat uw oplossing wordt gebouwd.

Met elk van de bovenstaande partners gebruiken ze hun eigen exemplaar van nuget.exe en hoeft u geen nuget.exe in uw oplossing te dragen.

Bekende problemen

Er zijn twee bekende problemen met nuget.exe herstellen met de eerste versie van 2.7, maar ze zijn opgelost op 9-6-2013 met een update naar het NuGet.CommandLine-pakket. Deze update is ook beschikbaar op codeplex [NuGet 2.7 download page](https://nuget.codeplex.com/releases/view/107605) . Voer nuget.exe update -self uit om bij te werken naar de nieuwste release.

De opgeloste problemen waren:

  1. [New package restore doesn't work on Mono when using SLN file](https://nuget.codeplex.com/workitem/3596)
  2. [New package restore doesn't work with Wix projects](https://nuget.codeplex.com/workitem/3598)

Er is ook een bekend probleem met het nieuwe pakketherstelsysteem waarbij [Automatic Package Restore does not work for projects under a solution folder](https://nuget.codeplex.com/workitem/3625). Dit probleem is opgelost in NuGet 2.7.1.

Buildfouten/waarschuwingen voor projectheroriëntering en upgrade

Vaak na het opnieuw instellen of upgraden van uw project, merkt u dat sommige NuGet-pakketten niet goed werken. Helaas is er geen indicatie van dit en dan is er geen richtlijnen voor het oplossen ervan. Met NuGet 2.7 gebruiken we nu enkele Visual Studio-gebeurtenissen om te herkennen wanneer u uw project opnieuw hebt gericht of bijgewerkt op een manier die van invloed is op uw geïnstalleerde NuGet-pakketten.

Als we detecteren dat een van uw pakketten is beïnvloed door de hertargeting of upgrade, produceren we onmiddellijke buildfouten om u dit te laten weten. Naast de onmiddellijke buildfout behouden we ook een requireReinstallation="true" vlag in uw packages.config bestand voor alle pakketten die zijn beïnvloed door de retargeting. Elke volgende build in Visual Studio genereert buildwaarschuwingen voor deze pakketten.

Hoewel NuGet geen automatische actie kan ondernemen om betrokken pakketten opnieuw te installeren, hopen we dat deze indicatie en waarschuwing u helpen bij het ontdekken wanneer u pakketten opnieuw moet installeren. We werken ook aan documentatie over herinstallatie van pakketten waarnaar deze foutberichten u verwijzen.

NuGet-standaardinstellingen

Veel bedrijven gebruiken NuGet intern, maar hebben hun ontwikkelaars moeilijk begeleid bij het gebruik van interne pakketbronnen in plaats van nuget.org. NuGet 2.7 introduceert een standaardfunctie voor configuratie waarmee standaardinstellingen voor de hele machine kunnen worden opgegeven voor:

  1. Ingeschakelde pakketbronnen
  2. Geregistreerde, maar uitgeschakelde pakketbronnen
  3. De standaard-nuget.exe pushbron

Elk van deze kan nu worden geconfigureerd binnen een bestand op %ProgramData%\NuGet\NuGetDefaults.Config. Als dit configuratiebestand pakketbronnen opgeeft, wordt de standaard-nuget.org pakketbron niet automatisch geregistreerd en worden de bronnen in NuGetDefaults.Config in plaats daarvan geregistreerd.

Hoewel deze functie niet is vereist, verwachten we dat bedrijven bestanden implementeren NuGetDefaults.Config met behulp van Groepsbeleid.

Houd er rekening mee dat met deze functie nooit een pakketbron wordt verwijderd uit de NuGet-instellingen van een ontwikkelaar. Dit betekent dat als de ontwikkelaar NuGet al heeft gebruikt en daarom de nuget.org pakketbron heeft geregistreerd, deze niet wordt verwijderd na het maken van een NuGetDefaults.Config bestand.

Zie NuGet-configuratiestandaarden voor meer informatie over deze functie.

De naam van de standaardpakketbron wijzigen

NuGet heeft altijd een standaardpakketbron met de naam 'Officiële NuGet-pakketbron' geregistreerd die verwijst naar nuget.org. Deze naam was uitgebreid en er werd ook niet opgegeven waar deze eigenlijk naar wijst. Om deze twee problemen op te lossen, hebben we de naam van deze pakketbron gewijzigd in 'nuget.org' in de gebruikersinterface. De URL voor de pakketbron is ook gewijzigd zodat het voorvoegsel www wordt opgenomen. Nadat u NuGet 2.7 hebt gebruikt, wordt uw bestaande 'officiële NuGet-pakketbron' automatisch bijgewerkt naar 'nuget.org' als naam en 'https://www.nuget.org/api/v2/' als URL.

Prestatieverbeteringen

We hebben in 2.7 prestatieverbeteringen aangebracht die een kleinere geheugenvoetafdruk opleveren, minder schijfgebruik en snellere pakketinstallatie. We hebben ook slimmere query's naar OData-feeds gemaakt, waardoor de totale nettolading wordt verminderd.

Nieuwe API's voor uitbreidbaarheid

We hebben enkele nieuwe API's toegevoegd aan onze uitbreidbaarheidsservices om het gat in ontbrekende functies in eerdere releases te vullen.

IVsPackageInstallerServices

// Checks if a NuGet package with the specified Id and version is installed in the specified project.
bool IsPackageInstalledEx(Project project, string id, string versionString);

// Get the list of NuGet packages installed in the specified project.
IEnumerable<IVsPackageMetadata> GetInstalledPackages(Project project);

IVsPackageInstaller

// Installs one or more packages that exist on disk in a folder defined in the registry.
void InstallPackagesFromRegistryRepository(string keyName, bool isPreUnzipped, bool skipAssemblyReferences, Project project, IDictionary<string, string> packageVersions);

// Installs one or more packages that are embedded in a Visual Studio Extension Package.
void InstallPackagesFromVSExtensionRepository(string extensionId, bool isPreUnzipped, bool skipAssemblyReferences, Project project, IDictionary<string, string> packageVersions);

Ontwikkelings-Only afhankelijkheden

Deze functie is bijgedragen door Adam Ralph en stelt pakketauteurs in staat om afhankelijkheden te declareren die alleen tijdens de ontwikkeling zijn gebruikt en waarvoor geen pakketafhankelijkheden zijn vereist. Als u een developmentDependency="true" kenmerk toevoegt aan een pakket in packages.config, zal nuget.exe pack dat pakket niet meer als afhankelijkheid opnemen.

Ondersteuning voor Visual Studio 2010 Express voor Windows Phone is verwijderd

Het nieuwe pakketherstelmodel in 2.7 wordt geïmplementeerd door een nieuwe VSPackage die verschilt van de belangrijkste NuGet VSPackage. Vanwege een technisch probleem werkt deze nieuwe VSPackage niet correct in de Visual Studio 2010 Express voor Windows Phone SKU, omdat we dezelfde codebasis delen met andere ondersteunde Visual Studio-SKU's. Daarom wordt vanaf NuGet 2.7 ondersteuning voor Visual Studio 2010 Express voor Windows Phone verwijderd uit de gepubliceerde extensie. Ondersteuning voor Visual Studio 2010 Express voor Web is nog steeds opgenomen in de primaire extensie die is gepubliceerd naar de Visual Studio Extension Gallery.

Omdat we niet zeker weten hoeveel ontwikkelaars NuGet nog gebruiken in die versie/editie van Visual Studio, publiceren we een afzonderlijke Visual Studio-extensie specifiek voor die gebruikers en publiceren deze op CodePlex (in plaats van de Visual Studio Extension Gallery). We zijn niet van plan om die extensie te blijven onderhouden, maar als dit van invloed is op u laat het ons dan weten door een probleem op CodePlex in te dienen.

Als u NuGet Package Manager (voor Visual Studio 2010 Express voor Windows Phone) wilt downloaden, gaat u naar de [NuGet 2.7 Downloads](https://nuget.codeplex.com/releases/view/107605) pagina.

Oplossingen voor bugs

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