Delen via


Releaseopmerkingen voor NuGet 2.5

Releaseopmerkingen voor | Releaseopmerkingen voor NuGet 2.6

NuGet 2.5 is uitgebracht op 25 april 2013. Deze release was zo groot, we voelden ons gedwongen om versies 2.3 en 2.4 over te slaan! Tot nu toe is dit de grootste release die we voor NuGet hebben gehad, met meer dan [160 work items](https://nuget.codeplex.com/workitem/list/advanced?release=NuGet%202.5&status=all) in de release.

Dankbetuigingen

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

  1. [Daniel Plaisted](https://www.codeplex.com/site/users/view/dsplaisted) (@dsplaisted)
    • [#2847](https://nuget.codeplex.com/workitem/2847) - Voeg MonoAndroid, MonoTouch en MonoMac toe aan de lijst met bekende doelframework-id's.
  2. [Andres G. Aragoneses](https://www.codeplex.com/site/users/view/knocte) (@knocte)
    • [#2865](https://nuget.codeplex.com/workitem/2865) - Spelling van NuGet.targets voor een hoofdlettergevoelig besturingssysteem corrigeren
  3. [David Fowler](https://www.codeplex.com/site/users/view/dfowler) (@davidfowl)
    • Bouw de oplossing op Mono.
  4. [Andrew Theken](https://www.codeplex.com/site/users/view/atheken) (@atheken)
    • Oplossing voor eenheidstests die mislukken op Mono.
  5. [Olivier Dagenais](https://www.codeplex.com/site/users/view/OliIsCool) (@OliIsCool)
    • [#2920](https://nuget.codeplex.com/workitem/2920) - opdracht nuget.exe pack geeft eigenschappen niet door aan MSBuild
  6. [Miroslav Bajtos](https://www.codeplex.com/site/users/view/MiroslavBajtos) (@bajtos)
    • [#1511](https://nuget.codeplex.com/workitem/1511) - Gewijzigde XML-verwerkingscode om opmaak te behouden.
  7. [Adam Ralph](http://www.codeplex.com/site/users/view/adamralph) (@adamralph)
    • Herkende woorden toegevoegd aan aangepaste woordenlijst, zodat build.cmd kan slagen.
  8. [Bruno Roggeri](https://www.codeplex.com/site/users/view/broggeri)
    • Unittests corrigeren wanneer uitgevoerd in een gelokaliseerde versie van Visual Studio.
  9. [Gareth Evans](https://www.codeplex.com/site/users/view/garethevans)
    • Geëxtraheerde interface uit PackageService
  10. [Maxime Brugidou](https://www.codeplex.com/site/users/view/brugidou) (@brugidou)
    • [#936](https://nuget.codeplex.com/workitem/936) - Projectafhankelijkheden verwerken bij het inpakken
  11. [Xavier Decoster](https://www.codeplex.com/site/users/view/XavierDecoster) (@XavierDecoster)
    • [#2991](https://nuget.codeplex.com/workitem/2991), [#3164](https://nuget.codeplex.com/workitem/3164) - Ondersteuning voor wachtwoord voor duidelijke tekst bij het opslaan van pakketbronreferenties in nuget.cofig-bestanden
  12. [James Manning](http://www.codeplex.com/site/users/view/jmanning) (@manningj)
    • [#3190](http://nuget.codeplex.com/workitem/3190), [#3191](https://nuget.codeplex.com/workitem/3191) - Help-beschrijving van Get-Package oplossen

We waarderen ook de volgende personen voor het vinden van bugs met NuGet 2.5 Beta/RC die zijn goedgekeurd en opgelost vóór de definitieve release:

  1. [Tony Wall](https://www.codeplex.com/site/users/view/CodeChief) (@CodeChief)
    • [#3200](https://nuget.codeplex.com/workitem/3200) - MSTest verbroken met de laatste NuGet 2.4 en 2.5 builds

Belangrijke functies in de release

Gebruikers toestaan inhoudsbestanden te overschrijven die al bestaan

Een van de meest aangevraagde functies is de mogelijkheid om inhoudsbestanden die al bestaan op schijf te overschrijven wanneer ze zijn opgenomen in een NuGet-pakket. Vanaf NuGet 2.5 worden deze conflicten geïdentificeerd en wordt u gevraagd de bestanden te overschrijven, terwijl deze bestanden eerder altijd zijn overgeslagen.

Inhoudsbestanden overschrijven

'nuget.exe update' en 'Install-Package' hebben nu beide een nieuwe optie '-FileConflictAction' om een aantal standaardinstellingen in te stellen voor opdrachtregelscenario's.

Stel een standaardactie in wanneer een bestand uit een pakket al bestaat in het doelproject. Ingesteld op Overschrijven om bestanden altijd te overschrijven. Ingesteld op Negeren om bestanden over te slaan. Als dit niet is opgegeven, wordt om elk conflicterend bestand gevraagd.

Automatisch importeren van MSBuild-doelen en props-bestanden

Er is een nieuwe conventionele map gemaakt op het hoogste niveau van het NuGet-pakket. Als gelijke van \lib, \content, en \tools kunt u nu een \build map in uw pakket opnemen. Onder deze map kunt u twee bestanden met vaste namen plaatsen, {packageid}.targets of {packageid}.props. Deze twee bestanden kunnen zich direct onder build of onder frameworkspecifieke mappen bevinden, net als de andere mappen. De regel voor het kiezen van de best overeenkomende frameworkmap is precies hetzelfde als in die.

Wanneer NuGet een pakket met \build-bestanden installeert, wordt er een MSBuild-element <Import> toegevoegd in het projectbestand dat verwijst naar de .targets en .props bestanden. Het .props bestand wordt bovenaan toegevoegd, terwijl het .targets bestand onderaan wordt toegevoegd.

Verschillende verwijzingen per platform opgeven met behulp van <References/> element

Vóór 2.5 kan de gebruiker in .nuspec het bestand alleen de referentiebestanden opgeven die voor alle frameworks moeten worden toegevoegd. Met deze nieuwe functie in 2.5 kan de gebruiker nu het <reference/> element ontwerpen voor elk van het ondersteunde platform, bijvoorbeeld:

<references>
    <group targetFramework="net45">
        <reference file="a.dll" />
    </group>
    <group targetFramework="netcore45">
        <reference file="b.dll" />
    </group>
    <group>
        <reference file="c.dll" />
    </group>
</references>

Hier volgt de stroom voor hoe NuGet verwijzingen toevoegt aan projecten op basis van het .nuspec bestand:

  1. Zoek de lib map die geschikt is voor het doelframework en haal de lijst met assembly's op uit die map
  2. Zoek afzonderlijk de referentiegroep die geschikt is voor het doelframework en haal de lijst met assembly's van die groep op. Referentiegroep zonder opgegeven doelframework is de terugvalgroep.
  3. Zoek het snijpunt van de twee lijsten en gebruik dit als verwijzingen om toe te voegen

Met deze nieuwe functie kunnen pakketauteurs de functie Verwijzingen gebruiken om subsets van assembly's toe te passen op verschillende frameworks wanneer ze anders dubbele assembly's in meerdere lib mappen moeten uitvoeren.

Opmerking: u moet momenteel nuget.exe pack gebruiken om deze functie te kunnen gebruiken; NuGet Package Explorer ondersteunt deze nog niet.

Knop Alles bijwerken zodat alle pakketten tegelijk kunnen worden bijgewerkt

Velen van u weten over de PowerShell-cmdlet Update-Package om al uw pakketten bij te werken; nu is er ook een eenvoudige manier om dit te doen via de gebruikersinterface.

Ga als volgt te werk om deze functie uit te proberen:

  1. Een nieuwe ASP.NET MVC-toepassing maken
  2. Start het dialoogvenster 'NuGet-pakketten beheren'
  3. Updates selecteren
  4. Klik op de knop Alles bijwerken

Knop Alles bijwerken in het dialoogvenster

Verbeterde ondersteuning voor projectreferenties voor nuget.exe Pack

Nu voert de nuget.exe pack-opdracht de verwijzingen naar projecten uit verwerkt volgens de volgende regels:

  1. Als het project waarnaar wordt verwezen, het bijbehorende .nuspec bestand heeft, bijvoorbeeld dat er een bestand proj1.nuspec in dezelfde map staat als proj1.csproj, wordt dit project toegevoegd als een afhankelijkheid van het pakket, met behulp van de id en versie die uit het .nuspec bestand is gelezen.
  2. Anders worden de bestanden van het project waarnaar wordt verwezen, gebundeld in het pakket. Vervolgens worden projecten waarnaar wordt verwezen door dit project, recursief verwerkt met behulp van dezelfde regels.
  3. Alle DLL-bestanden .pdben .exe bestanden worden toegevoegd.
  4. Alle andere inhoudsbestanden worden toegevoegd.
  5. Alle afhankelijkheden worden samengevoegd.

Hierdoor kan een project waarnaar wordt verwezen, worden behandeld als een afhankelijkheid als er een .nuspec bestand is, anders wordt het onderdeel van het pakket.

Meer informatie hier: [http://nuget.codeplex.com/workitem/936](http://nuget.codeplex.com/workitem/936)

Een eigenschap Minimale NuGet-versie toevoegen aan pakketten

Een nieuw metagegevenskenmerk met de naam 'minClientVersion' kan nu aangeven welke minimale NuGet-clientversie vereist is om een pakket te gebruiken.

Met deze functie kan de auteur van het pakket opgeven dat een pakket pas werkt na een bepaalde versie van NuGet. Als er nieuwe .nuspec functies worden toegevoegd na NuGet 2.5, kunnen pakketten een minimale NuGet-versie claimen.

<metadata minClientVersion="2.6">

Als de gebruiker NuGet 2.5 heeft geïnstalleerd en een pakket wordt geïdentificeerd als vereist 2.6, worden visuele aanwijzingen aan de gebruiker gegeven die aangeeft dat het pakket niet kan worden geïnstalleerd. De gebruiker wordt vervolgens begeleid bij het bijwerken van hun versie van NuGet.

Dit verbetert de bestaande ervaring waarbij pakketten beginnen te installeren, maar mislukken, wat aangeeft dat er een niet-herkende schemaversie is geïdentificeerd.

Afhankelijkheden worden niet meer onnodig bijgewerkt tijdens de installatie van het pakket

Vóór NuGet 2.5, wanneer een pakket werd geïnstalleerd dat afhankelijk was van een pakket dat al in het project is geïnstalleerd, zou de afhankelijkheid worden bijgewerkt als onderdeel van de nieuwe installatie, zelfs als de bestaande versie voldeed aan de afhankelijkheid.

Vanaf NuGet 2.5 wordt de afhankelijkheid niet bijgewerkt tijdens andere pakketinstallaties als er al aan een afhankelijkheidsversie is voldaan.

Het scenario:

  1. De bronopslagplaats bevat pakket B met versie 1.0.0 en 1.0.2. Het bevat ook pakket A met een afhankelijkheid van B (>= 1.0.0).
  2. Stel dat in het huidige project al pakket B versie 1.0.0 is geïnstalleerd. Nu wilt u pakket A installeren.

In NuGet 2.2 en ouder:

  • Wanneer u pakket A installeert, zal NuGet B automatisch bijwerken naar 1.0.2, zelfs als de bestaande versie 1.0.0 al voldoet aan de afhankelijkheidsversiebeperking, die > = 1.0.0 is.

In NuGet 2.5 en hoger:

  • NuGet werkt B niet meer bij, omdat wordt gedetecteerd dat de bestaande versie 1.0.0 voldoet aan de beperking van de afhankelijkheidsversie.

Lees de gedetailleerde en gerelateerde [work item](https://nuget.codeplex.com/workitem/1681)[discussion thread](https://nuget.codeplex.com/discussions/436712)informatie voor meer achtergrondinformatie over deze wijziging.

nuget.exe voert http-aanvragen met gedetailleerde uitgebreidheid uit

Als u problemen met nuget.exe wilt oplossen of alleen nieuwsgierig bent welke HTTP-aanvragen worden gedaan tijdens bewerkingen, zal de '-detailniveau gedetailleerd' switch nu alle uitgevoerde HTTP-aanvragen weergeven.

HTTP-uitvoer van nuget.exe

nuget.exe push ondersteunt nu UNC- en mapbronnen

Voor NuGet 2.5 zou de push mislukt als u 'nuget.exe push' naar een pakketbron probeerde uit te voeren op basis van een UNC-pad of lokale map. Met de onlangs toegevoegde hiërarchische configuratiefunctie was het gebruikelijk dat nuget.exe zich moest richten op een UNC-/mapbron of een NuGet-galerie op basis van HTTP.

Vanaf NuGet 2.5, wanneer nuget.exe een UNC-map als bron identificeert, wordt de kopie van het bestand naar de bron uitgevoerd.

De volgende opdracht werkt nu:

nuget push -source \\mycompany\repo\ mypackage.1.0.0.nupkg

nuget.exe ondersteunt expliciet opgegeven configuratiebestanden

nuget.exe opdrachten die toegang hebben tot de configuratie (allemaal behalve 'spec' en 'pack') bieden nu ondersteuning voor een nieuwe optie -ConfigFile, waardoor een specifiek configuratiebestand moet worden gebruikt in plaats van het standaardconfiguratiebestand op %AppData%\nuget\Nuget.Config.

Voorbeeld:

nuget sources add -name test -source http://test -ConfigFile C:\test\.nuget\Nuget.Config

Ondersteuning voor systeemeigen projecten

Met NuGet 2.5 is de NuGet-hulpprogramma's nu beschikbaar voor systeemeigen projecten in Visual Studio. We verwachten dat de meeste systeemeigen pakketten gebruikmaken van de bovenstaande MSBuild-importfunctie, met behulp van een hulpprogramma dat is gemaakt door het CoApp-project. Lees de details van het hulpprogramma op de coapp.org website voor meer informatie.

De naam van het doelframework van 'native' wordt geïntroduceerd voor pakketten voor het opnemen van bestanden in \build, \content en \tools wanneer het pakket is geïnstalleerd in een systeemeigen project. De map 'lib' wordt niet gebruikt voor systeemeigen projecten.