Sdílet prostřednictvím


Zpráva k vydání verze NuGet 2.8

Zpráva | k vydání verze NuGet 2.7.2 NuGet 2.8.1 – zpráva k vydání verze

NuGet 2.8 byl vydán 29. ledna 2014.

Poděkování

  1. [Llewellyn Pritchard](https://www.codeplex.com/site/users/view/leppie) (@leppie)
    • [#3466](https://nuget.codeplex.com/workitem/3466) - Při balení balíčků ověřte ID balíčků závislostí.
  2. [Maarten Balliauw](https://www.codeplex.com/site/users/view/maartenba) (@maartenballiauw)
    • [#2379](https://nuget.codeplex.com/workitem/2379) – Při zachování přihlašovacích údajů informačního kanálu odeberte příponu $metadata.
  3. [Filip De Vos](https://www.codeplex.com/site/users/view/FilipDeVos) (@foxtricks)
    • [#3538](http://nuget.codeplex.com/workitem/3538) - Podpora zadávání souboru projektu pro příkaz nuget.exe update.
  4. [Juan Gonzalez](https://www.codeplex.com/site/users/view/jjgonzalez)
    • [#3536](http://nuget.codeplex.com/workitem/3536) – Náhradní tokeny se nepředá s parametrem -IncludeReferencedProjects.
  5. [David Poole](https://www.codeplex.com/site/users/view/Sarkie) (@Sarkie_Dave)
    • [#3677](http://nuget.codeplex.com/workitem/3677) - Oprava nuget.push vyvolá OutOfMemoryException při nabízení velkého balíčku.
  6. [Wouter Ouwens](https://www.codeplex.com/site/users/view/Despotes)
    • [#3666](http://nuget.codeplex.com/workitem/3666) – Opravte nesprávnou cílovou cestu, když projekt odkazuje na jiný projekt CLI/C++.
  7. [Adam Ralph](http://www.codeplex.com/site/users/view/adamralph) (@adamralph)
    • [#3639](https://nuget.codeplex.com/workitem/3639) – Povolit instalaci balíčků jako vývojových závislostí ve výchozím nastavení
  8. [David Fowler](https://www.codeplex.com/site/users/view/dfowler) (@davidfowl)
    • [#3717](https://nuget.codeplex.com/workitem/3717) – Odebrání implicitních upgradů na nejnovější verzi opravy
  9. [Gregory Vandenbrouck](https://www.codeplex.com/site/users/view/vdbg)
    • Několik oprav a vylepšení chyb pro NuGet.Server, příkaz nuget.exe zrcadlení a další.
    • Tato práce byla provedena za několik měsíců. Gregory s námi pracuje na správném načasování, aby se integroval do hlavní verze 2.8.

Řešení oprav pro závislosti

Při řešení závislostí balíčku nuGet v minulosti implementoval strategii výběru nejnižší hlavní a podverze balíčku, která splňuje závislosti na balíčku. Na rozdíl od hlavní a podverze se však verze opravy vždy přeložila na nejvyšší verzi. I když bylo chování dobře záměrné, vytvořilo nedostatek determinismu pro instalaci balíčků se závislostmi. Představte si následující příklad:

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

V tomto příkladu, i když developer1 a Developer2 nainstalovali PackageA@1.0.0, každý skončil s jinou verzí PackageB. NuGet 2.8 změní toto výchozí chování tak, aby chování řešení závislostí pro verze oprav bylo konzistentní s chováním hlavních a podverzí. V předchozím příkladu by se PackageB@1.0.0 nainstalovala v důsledku instalace PackageA@1.0.0 bez ohledu na novější verzi opravy.

-DependencyVersion Switch

I když NuGet 2.8 mění výchozí chování pro řešení závislostí, přidává také přesnější kontrolu nad procesem řešení závislostí prostřednictvím přepínače -DependencyVersion v konzole správce balíčků. Přepínač umožňuje přeložit závislosti na nejnižší možné verzi (výchozí chování), nejvyšší možnou verzi nebo nejvyšší podverzi nebo verzi opravy. Tento přepínač funguje jenom pro install-package v příkazu PowerShellu.

DependencyVersion Switch

Atribut DependencyVersion

Kromě výše uvedeného přepínače -DependencyVersion umožňuje NuGet také nastavit nový atribut v souboru Nuget.Config definující výchozí hodnotu, pokud není přepínač -DependencyVersion zadaný při vyvolání instalačního balíčku. Tuto hodnotu bude respektovat také NuGet Správce balíčků Dialog pro všechny operace instalačního balíčku. Pokud chcete nastavit tuto hodnotu, přidejte do souboru Nuget.Config následující atribut:

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

Operace NuGet ve verzi Preview s -whatif

Některé balíčky NuGet můžou mít podrobné grafy závislostí, a proto může být užitečné při instalaci, odinstalaci nebo operaci aktualizace, aby se nejprve zjistilo, co se stane. NuGet 2.8 přidá standardní powershellový přepínač -whatif do příkazů install-package, uninstall-package a update-package, aby bylo možné vizualizovat celé uzavření balíčků, na které se má příkaz použít. Například spuštění install-package Microsoft.AspNet.WebApi -whatif v prázdné ASP.NET webové aplikace přináší následující.

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

Downgrade Package

Není neobvyklé nainstalovat předběžnou verzi balíčku, aby bylo možné prozkoumat nové funkce a pak se rozhodnout vrátit zpět k poslední stabilní verzi. Před NuGetem 2.8 se jednalo o vícekrokový proces odinstalace předběžné verze balíčku a jeho závislostí a následnou instalaci předchozí verze. V případě NuGetu 2.8 se ale balíček aktualizace vrátí zpět k ukončení celého balíčku (např. stromu závislostí balíčku) na předchozí verzi.

Vývojové závislosti

Mnoho různých typů funkcí je možné doručit jako balíčky NuGet – včetně nástrojů, které se používají k optimalizaci procesu vývoje. Tyto komponenty, zatímco mohou být instrumentální při vývoji nového balíčku, by neměly být při pozdějším publikování považovány za závislost nového balíčku. NuGet 2.8 umožňuje, aby se balíček v .nuspec souboru identifikoval jako developmentDependency. Při instalaci se tato metadata také přidají do packages.config souboru projektu, do kterého byl balíček nainstalován. packages.config Pokud je tento soubor později analyzován pro závislosti NuGet během nuget.exe pack, vyloučí tyto závislosti označené jako vývojové závislosti.

Jednotlivé soubory packages.config pro různé platformy

Při vývoji aplikací pro více cílových platforem je běžné mít pro každé z příslušných prostředí sestavení různé soubory projektu. Je také běžné využívat různé balíčky NuGet v různých souborech projektu, protože balíčky mají různé úrovně podpory pro různé platformy. NuGet 2.8 poskytuje vylepšenou podporu pro tento scénář vytvořením různých packages.config souborů projektu specifických pro konkrétní platformu.

Multiple package.config files

Náhradní do místní mezipaměti

Přestože balíčky NuGet se obvykle využívají ze vzdálené galerie, jako je například galerie NuGet pomocí síťového připojení, existuje mnoho scénářů, kdy klient není připojený. Bez síťového připojení se klientovi NuGet nepodařilo úspěšně nainstalovat balíčky – i když už tyto balíčky byly na počítači klienta v místní mezipaměti NuGet. NuGet 2.8 přidá do konzoly správce balíčků automatickou záložní mezipaměť. Například při odpojení síťového adaptéru a instalaci jQuery se v konzole zobrazí následující:

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.

Funkce záložní mezipaměti nevyžaduje žádné konkrétní argumenty příkazu. Záložní mezipaměť navíc v současné době funguje pouze v konzole správce balíčků – chování v dialogovém okně správce balíčků aktuálně nefunguje.

Aktualizace klienta NuGet WebMatrix

Společně s NuGetem 2.8 se také aktualizovalo rozšíření NuGet pro WebMatrix, aby zahrnovalo mnoho hlavních funkcí dodaných s NuGetem 2.5. Mezi nové funkce patří například Update All (Aktualizovat vše), Minimum NuGet Version (Minimální verze NuGet) a povolení přepisu souborů obsahu.

Aktualizace rozšíření NuGet Správce balíčků v nástroji WebMatrix 3:

  1. Otevřít WebMatrix 3
  2. Klikněte na ikonu Rozšíření na pásu karet.
  3. Výběr karty Aktualizace
  4. Kliknutím aktualizujte Správce balíčků NuGet na verzi 2.5.0.
  5. Zavření a restartování aplikace WebMatrix 3

Toto je první verze rozšíření NuGet Správce balíčků pro WebMatrix týmu NuGet. Kód nedávno přispěl Microsoft do opensourcového projektu NuGet. Dříve byla integrace NuGet integrována do WebMatrixu a nebylo možné ji aktualizovat z webu WebMatrix. Teď máme možnost ji dále aktualizovat společně se zbývajícími klientskými nástroji NuGetu.

Opravy chyb

Jedním z hlavních oprav chyb bylo zlepšení výkonu v příkazu update-package -reinstall.

Kromě těchto funkcí a výše uvedené opravy výkonu obsahuje tato verze NuGet také mnoho dalších oprav chyb. V této verzi bylo vyřešeno celkem 181 problémů. Úplný seznam pracovních položek opravených v NuGetu 2.8 najdete v souboru [NuGet Issue Tracker for this release](https://nuget.codeplex.com/workitem/list/advanced?release=NuGet%202.8&status=all).