Delen via


Releaseopmerkingen voor NuGet 2.0

Releaseopmerkingen | voor NuGet 1.8Releaseopmerkingen voor NuGet 2.1

NuGet 2.0 is uitgebracht op 19 juni 2012.

Bekend installatieprobleem

Als u VS 2010 SP1 uitvoert, treedt er mogelijk een installatiefout op bij het upgraden van NuGet als u een oudere versie hebt geïnstalleerd.

De tijdelijke oplossing is om NuGet te verwijderen en vervolgens te installeren vanuit de VS Extension Gallery. Zie https://support.microsoft.com/kb/2581019 voor meer informatie of ga rechtstreeks naar de VS-hotfix.

Opmerking: Als u in Visual Studio de extensie niet kunt verwijderen (de knop Verwijderen is uitgeschakeld), moet u Visual Studio waarschijnlijk opnieuw starten met 'Als administrator uitvoeren'.

Zoals beschreven in dit bericht over toestemming voor pakketherstel, vereist NuGet 2.0 nu dat toestemming wordt gegeven om pakketherstel in te schakelen om online te gaan en pakketten te downloaden. Zorg ervoor dat u toestemming hebt gegeven via het configuratiedialoogvenster van Package Manager of de omgevingsvariabele EnableNuGetPackageRestore.

Afhankelijkheden groeperen op doelframeworks

Vanaf versie 2.0 kunnen pakketafhankelijkheden variëren op basis van het frameworkprofiel van het doelproject. Dit wordt bereikt met behulp van een bijgewerkt .nuspec schema. Het <dependencies> element kan nu een set <group> elementen bevatten. Elke groep bevat nul of meer <dependency> elementen en een targetFramework kenmerk. Alle afhankelijkheden in een groep worden samen geïnstalleerd als het doelframework compatibel is met het profiel van het doelprojectframework. Voorbeeld:

<dependencies>
    <group>
        <dependency id="RouteMagic" version="1.1.0" />
    </group>

    <group targetFramework="net40">
        <dependency id="jQuery" />
        <dependency id="WebActivator" />
    </group>

    <group targetFramework="sl30">
    </group>
</dependencies>

Houd er rekening mee dat een groep nul afhankelijkheden kan bevatten. Als het pakket in het bovenstaande voorbeeld is geïnstalleerd in een project dat is gericht op Silverlight 3.0 of hoger, worden er geen afhankelijkheden geïnstalleerd. Als het pakket is geïnstalleerd in een project dat is gericht op .NET 4.0 of hoger, worden twee afhankelijkheden, jQuery en WebActivator, geïnstalleerd. Als het pakket is geïnstalleerd in een project dat is gericht op een vroege versie van deze 2 frameworks of een ander framework, wordt RouteMagic 1.1.0 geïnstalleerd. Er is geen overname tussen groepen. Als het doelframework van een project overeenkomt met het targetFramework kenmerk van een groep, worden alleen de afhankelijkheden binnen die groep geïnstalleerd.

Een pakket kan pakketafhankelijkheden in twee indelingen opgeven: de oude indeling van een platte lijst <dependency> met elementen of groepen. Als de <group> indeling wordt gebruikt, kan het pakket niet worden geïnstalleerd in versies van NuGet ouder dan 2.0.

Houd er rekening mee dat het combineren van de twee indelingen niet is toegestaan. Het volgende codefragment is bijvoorbeeld ongeldig en wordt geweigerd door NuGet.

<dependencies>
    <dependency id="jQuery" />
    <dependency id="WebActivator" />

    <group>
        <dependency id="RouteMagic" version="1.1.0" />
    </group>
</dependencies>

Inhoudsbestanden en PowerShell-scripts groeperen op doelframework

Naast assemblyverwijzingen kunnen inhoudsbestanden en PowerShell-scripts ook worden gegroepeerd op doelframework. Dezelfde mapstructuur in de lib map voor het opgeven van het doelframework kan nu op dezelfde manier worden toegepast op de content map en tools mappen. Voorbeeld:

\content
    \net11
        \MyContent.txt
    \net20
        \MyContent20.txt
    \net40
    \sl40
        \MySilverlightContent.html

\tools
    \init.ps1
    \net40
        \install.ps1
        \uninstall.ps1
    \sl40
        \install.ps1
        \uninstall.ps1

Opmerking: Omdat init.ps1 deze wordt uitgevoerd op oplossingsniveau en niet afhankelijk is van een afzonderlijk project, moet deze rechtstreeks onder de tools map worden geplaatst. Als deze in een frameworkspecifieke map wordt geplaatst, wordt deze genegeerd.

Een nieuwe functie in NuGet 2.0 is dat een frameworkmap leeg kan zijn. In dat geval voegt NuGet geen assembly-referenties toe, geen inhoudsbestanden toe en voert geen PowerShell-scripts uit voor de specifieke frameworkversie. In het bovenstaande voorbeeld is de map content\net40 leeg.

Verbeterde prestaties van tabbladvoltooiing

De functie voor het voltooien van tabbladen in de NuGet Package Manager-console is bijgewerkt om de prestaties aanzienlijk te verbeteren. Er is veel minder vertraging vanaf het moment dat de tabtoets wordt ingedrukt totdat de vervolgkeuzelijst voor suggesties wordt weergegeven.

Oplossingen voor bugs

NuGet 2.0 bevat veel bugfixes met nadruk op toestemming en prestaties van pakketherstel. Voor een volledige lijst met werkitems die zijn opgelost in NuGet 2.0, bekijkt u de [NuGet Issue Tracker for this release](http://nuget.codeplex.com/workitem/list/advanced?keyword=&status=Closed&type=All&priority=All&release=NuGet%202.0&assignedTo=All&component=All&sortField=Votes&sortDirection=Descending&page=0).