Zpráva k vydání verze NuGet 2.7
NuGet 2.6.1 pro WebMatrix – zpráva k | vydání verze NuGet 2.7.1 – zpráva k vydání verze
NuGet 2.7 byl vydán 22. srpna 2013.
Rádi bychom poděkovali následujícím externím přispěvatelům za jejich významné příspěvky na NuGet 2.7:
[Mike Roth](http://www.codeplex.com/site/users/view/mxrss)
(@mxrss)- Zobrazit adresu URL licence při výpisu balíčků a podrobností je podrobně popsána.
[Adam Ralph](http://www.codeplex.com/site/users/view/adamralph)
(@adamralph)[#1956](http://nuget.codeplex.com/workitem/1956)
- Přidání atributu developmentDependency apackages.config
jeho použití v příkazu pack, aby zahrnoval pouze balíčky runtime
[Rafael Nicoletti](http://www.codeplex.com/site/users/view/tkrafael)
(@tkrafael)- Vyhněte se duplicitnímu klíči Vlastnosti v příkazu nuget.exe pack.
[Ben Phegan](http://www.codeplex.com/site/users/view/benphegan)
(@BenPhegan)[#2610](http://nuget.codeplex.com/workitem/2610)
- Zvětšete velikost mezipaměti počítače na 200.
[Slava Trenogin](http://www.codeplex.com/site/users/view/derigel)
(@derigel)[#3217](http://nuget.codeplex.com/workitem/3217)
– Oprava dialogového okna NuGet zobrazující aktualizace na nesprávné kartě- Oprava Project.TargetFramework může mít v ProjectManageru hodnotu null.
[#3248](http://nuget.codeplex.com/workitem/3248)
– Oprava SharedPackageRepository FindPackage/FindPackagesById selže u neexistujících ID balíčku
[Kevin Boyle](http://www.codeplex.com/site/users/view/KevinBoyleRG)
(@kevfromireland)[#3234](http://nuget.codeplex.com/workitem/3234)
- Povolení podpory pro projekt Nomad
[Corin Blaikie](http://www.codeplex.com/site/users/view/corinblaikie)
(@corinblaikie)[#3252](http://nuget.codeplex.com/workitem/3252)
– Oprava příkazu push selže s ukončovacím kódem 0, pokud soubor neexistuje.
[Martin Veselý](http://www.codeplex.com/site/users/view/veselkamartin)
[#3226](http://nuget.codeplex.com/workitem/3226)
- Oprava chyby s příkazem Add-BindingRedirect, když projekt odkazuje na databázový projekt.
[Miroslav Bajtos](http://www.codeplex.com/site/users/view/miroslavbajtos)
(@bajtos)[#2891](http://nuget.codeplex.com/workitem/2891)
- Oprava chyby nuget.pack parsování zástupných znaků v atributu exclude nesprávně.
[Justin Dearing](http://www.codeplex.com/site/users/view/zippy1981)
(@zippy1981)[#3307](http://nuget.codeplex.com/workitem/3307)
– Oprava chybyNuGet.targets
nepředává $(Platform) do nuget.exe při obnovování balíčků.
[Brian Federici](http://www.codeplex.com/site/users/view/benerdin)
[#3294](http://nuget.codeplex.com/workitem/3294)
- Opravte chybu v příkazu balíčku nuget.exe, který by umožnil přidání souborů se stejným názvem, ale jiné velikostí a nakonec způsobil výjimku "Položka již existuje".
[Daniel Cazzulino](http://www.codeplex.com/site/users/view/dcazzulino)
(@kzu)[#2990](http://nuget.codeplex.com/workitem/2990)
- Přidání vlastnosti Version do NetPortableProfile třídy.
[David Simner](https://www.codeplex.com/site/users/view/DavidSimner)
[#3460](https://nuget.codeplex.com/workitem/3460)
– Oprava chyby NullReferenceException, pokud requireApiKey = true, ale hlavička X-NUGET-APIKEY není k dispozici
[Michael Friis](https://www.codeplex.com/site/users/view/friism)
(@friism)[#3278](https://nuget.codeplex.com/workitem/3278)
– Opraví soubor NuGet.Build tak, aby správně fungoval na MonoDevelopu.
[Pranav Krishnamoorthy](https://www.codeplex.com/site/users/view/pranavkm)
(@pranav_km)- Zvýšení výkonu příkazu Restore zvýšením paralelizace
NuGet 2.7 zavádí nový přístup k obnovení balíčku a také překoná zásadní překážku: Souhlas s obnovením balíčku je teď ve výchozím nastavení zapnutý. Kombinace nového přístupu a implicitního souhlasu výrazně zjednoduší scénáře obnovení balíčků.
S NuGet verze 2.0, 2.1, 2.2, 2.5 a 2.6 uživatelé potřebovali explicitně povolit NuGet stahování chybějících balíčků během sestavování. Pokud se tento souhlas explicitně neudělil, řešení, která povolila obnovení balíčku, se nepodaří sestavit, dokud uživatel neudělil souhlas.
Od NuGetu 2.7 je ve výchozím nastavení zapnutý souhlas s obnovením balíčku a uživatelé můžou v případě potřeby explicitně odhlásit obnovení balíčku pomocí zaškrtávacího políčka v nastavení NuGetu v sadě Visual Studio. Tato změna implicitního souhlasu má vliv na NuGet v následujících prostředích:
- Visual Studio 2013 Preview
- Visual Studio 2012
- Visual Studio 2010
- nástroj příkazového řádku nuget.exe
Od NuGetu 2.7 automaticky stáhne chybějící balíčky během sestavování v sadě Visual Studio, i když pro řešení není explicitně povolené obnovení balíčků. K tomuto automatickému obnovení balíčku dochází v sadě Visual Studio při sestavení projektu nebo řešení, ale před vyvolání nástroje MSBuild. To přináší několik významných výhod:
- V řešení už nemusíte používat gesto Povolit obnovení balíčků NuGet.
- Projekty není potřeba upravovat a NuGet nebude provádět změny projektu, aby se zajistilo, že je povolené obnovení balíčku.
- Všechny balíčky NuGet, včetně těch, které zahrnovaly import msBuild pro soubory props/targets, se obnoví před vyvoláním nástroje MSBuild a zajistí, aby se tyto props/cíle během sestavení správně rozpoznaly.
Pokud chcete použít automatické obnovení balíčků v sadě Visual Studio, stačí provést jenom jednu akci (v):
- Nezaškrtávejte složku
packages
Existuje několik způsobů, jak vynechat packages
složku ze správy zdrojového kódu. Další informace najdete v tématu Balíčky a Správa zdrojového kódu .
I když se všichni uživatelé implicitně přihlašují k souhlasu automatického obnovení balíčků, můžete se snadno odhlásit prostřednictvím nastavení Správce balíčků v sadě Visual Studio.
NuGet 2.7 zavádí novou funkci pro nuget.exe: nuget.exe restore
Tento nový příkaz Obnovit umožňuje snadno obnovit všechny balíčky pro řešení jediným příkazem tím, že přijme soubor řešení nebo složku jako argument. Kromě toho se tento argument předpokládá, když v aktuální složce existuje pouze jedno řešení. To znamená, že následující práce ze složky, která obsahuje jeden soubor řešení (MySolution.sln):
- nuget.exe obnovení MySolution.sln
- nuget.exe obnovení .
- obnovení nuget.exe
Příkaz Obnovit otevře soubor řešení a najde všechny projekty v rámci řešení. Odtud najdete packages.config
soubory pro každý z projektů a obnoví všechny nalezené balíčky. Obnoví také balíčky na úrovni řešení nalezené v .nuget\packages.config
souboru. Další informace o novém příkazu Restore najdete v referenčních informacích příkazového řádku.
Jsme nadšeni z těchto změn obnovení balíčku, protože představuje nový pracovní postup. Pokud chcete vynechat balíčky ze správy zdrojového kódu, jednoduše složku neověřete packages
. Uživatelé sady Visual Studio, kteří řešení otevřou a sestaví, uvidí balíčky automaticky obnovené. Pro sestavení příkazového řádku jednoduše vyvolat nuget.exe restore
před vyvoláním msbuild
. Už si nemusíte pamatovat, že ve vašem řešení použijete gesto "Povolit obnovení balíčku NuGet" a už nebudeme muset upravovat vaše projekty tak, aby změnily sestavení. A to také přináší mnohem vylepšené prostředí pro balíčky, které zahrnují importy MSBuild, zejména pro importy přidané prostřednictvím nedávné funkce NuGet pro automatický import souborů props/targets ze složky \build.
Kromě práce, které jsme udělali sami, pracujeme také s některými důležitými partnery, abychom tento nový přístup zaokrouhlili. Zatím nemáme konkrétní časové osy pro žádnou z těchto možností, ale každý partner je tak nadšený, jak jsme na novém přístupu.
- Team Foundation Service – Pracují na integraci volání
nuget.exe restore
do výchozích scénářů sestavení. - Weby Windows Azure – Pracují na tom, abyste mohli projekt odeslat do Azure a volali
nuget.exe restore
ho před sestavením webu. - TeamCity – Aktualizují modul plug-in NuGet pro TeamCity 8.x.
- AppHarbor – Pracují na tom, abyste umožnili nasdílení úložiště do AppHarboru a volali
nuget.exe restore
ho před sestavením vašeho řešení.
U každého z výše uvedených partnerů by používali vlastní kopii nuget.exe a v řešení byste nemuseli přenášet nuget.exe.
Došlo ke dvěma známým problémům s obnovením nuget.exe v počáteční verzi 2.7, ale byly opraveny 6. 9. 2013 aktualizací balíčku NuGet.CommandLine. Tato aktualizace je k dispozici také v [NuGet 2.7 download page](https://nuget.codeplex.com/releases/view/107605)
codePlex. Spuštění nuget.exe update -self
se aktualizuje na nejnovější verzi.
Opraveno bylo:
[New package restore doesn't work on Mono when using SLN file](https://nuget.codeplex.com/workitem/3596)
[New package restore doesn't work with Wix projects](https://nuget.codeplex.com/workitem/3598)
Existuje také známý problém s novým pracovním postupem obnovení balíčku, kdy [Automatic Package Restore does not work for projects under a solution folder](https://nuget.codeplex.com/workitem/3625)
. Tento problém byl opravený v NuGetu 2.7.1.
Často po opětovném cílení nebo upgradu projektu zjistíte, že některé balíčky NuGet nefungují správně. Bohužel neexistuje žádný údaj o tom, že by to nebylo možné vyřešit. S NuGetem 2.7 teď používáme některé události sady Visual Studio k rozpoznání, kdy jste projekt retargetovali nebo upgradovali způsobem, který ovlivňuje nainstalované balíčky NuGet.
Pokud zjistíme, že na některý z vašich balíčků došlo při retargetingu nebo upgradu k ovlivnění, vytvoříme okamžité chyby sestavení, které vás oznamují. Kromě okamžité chyby sestavení uložíme requireReinstallation="true"
také příznak v packages.config
souboru pro všechny balíčky, které byly ovlivněny retargetingem, a každé následné sestavení v sadě Visual Studio vyvolá upozornění na sestavení pro tyto balíčky.
I když NuGet nemůže provést automatickou akci pro přeinstalaci ovlivněných balíčků, doufáme, že tato indikace a upozornění vám pomůžou zjistit, kdy potřebujete přeinstalovat balíčky. Pracujeme také na dokumentaci k přeinstalaci balíčků, na které vás tyto chybové zprávy nasměrují.
Mnoho společností interně používá NuGet, ale jejich vývojáři měli potíže s používáním interních zdrojů balíčků místo nuget.org. NuGet 2.7 zavádí funkci Výchozí nastavení konfigurace, která umožňuje zadat výchozí hodnoty pro celý počítač:
- Povolené zdroje balíčků
- Zaregistrované, ale zakázané zdroje balíčků
- Výchozí zdroj nabízených oznámení nuget.exe
Každá z těchto možností je nyní možné nakonfigurovat v souboru umístěném na %ProgramData%\NuGet\NuGetDefaults.Config
adrese . Pokud tento konfigurační soubor určuje zdroje balíčků, výchozí nuget.org zdroj balíčku nebude registrován automaticky a místo toho se zaregistrují.NuGetDefaults.Config
I když tuto funkci nemusí používat, očekáváme, že společnosti nasadí NuGetDefaults.Config
soubory pomocí zásad skupiny.
Mějte na paměti, že tato funkce nikdy nezpůsobí odebrání zdroje balíčku z nastavení NuGet vývojáře. To znamená, že pokud už vývojář použil NuGet, a proto má zaregistrovaný zdroj balíčku nuget.org, po vytvoření NuGetDefaults.Config
souboru se neodebere.
Další informace o této funkci najdete v tématu Výchozí nastavení konfigurace NuGet.
NuGet vždy zaregistroval výchozí zdroj balíčku s názvem Oficiální zdroj balíčku NuGet, který odkazuje na nuget.org. Tento název byl podrobný a také neurčil, kde skutečně odkazoval. Abychom tyto dva problémy vyřešili, přejmenovali jsme tento zdroj balíčku tak, aby v uživatelském rozhraní jednoduše "nuget.org". Adresa URL zdroje balíčku byla také změněna tak, aby zahrnovala předponu "www". Po použití NuGetu 2.7 se váš stávající oficiální zdroj balíčku NuGet automaticky aktualizuje na "nuget.org" jako název a "https://www.nuget.org/api/v2/" jako jeho adresu URL.
Vylepšili jsme výkon ve verzi 2.7, což přinese menší nároky na paměť, menší využití disku a rychlejší instalaci balíčků. Provedli jsme také chytřejší dotazy na datové kanály založené na OData, což sníží celkovou datovou část.
Do našich služeb rozšiřitelnosti jsme přidali některá nová rozhraní API, která zaplní mezeru chybějících funkcí v předchozích verzích.
// 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);
// 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);
Touto funkcí přispěl Adam Ralph a umožňuje autorům balíčků deklarovat závislosti, které byly použity pouze v době vývoje a nevyžadují závislosti balíčků. Přidáním atributu developmentDependency="true"
do balíčku už packages.config
nuget.exe pack
tento balíček nebude obsahovat jako závislost.
Nový model obnovení balíčků ve verzi 2.7 implementuje nová sada VSPackage, která se liší od hlavní sady VSPackage NuGet. Kvůli technickému problému tento nový balíček VSPackage nefunguje správně v sadě Visual Studio 2010 Express pro Windows Telefon skladové položky, protože sdílíme stejný základ kódu s jinými podporovanými skladovými položkami sady Visual Studio. Proto od NuGetu 2.7 z publikovaného rozšíření zahazujeme podporu pro Visual Studio 2010 Express pro Telefon Windows. Podpora pro Visual Studio 2010 Express pro web je stále součástí primárního rozšíření publikovaného v galerii rozšíření sady Visual Studio.
Vzhledem k tomu, že si nejsme jistí, kolik vývojářů v této verzi nebo edici sady Visual Studio stále používá NuGet, publikujeme samostatné rozšíření sady Visual Studio speciálně pro tyto uživatele a publikujeme ho v CodePlexu (nikoli v galerii rozšíření sady Visual Studio). Neplánujeme pokračovat v údržbě tohoto rozšíření, ale pokud se vás to týká, dejte nám vědět vytvořením problému na CodePlex.
Pokud chcete stáhnout Správce balíčků NuGet (pro Visual Studio 2010 Express pro Windows Telefon), navštivte [NuGet 2.7 Downloads](https://nuget.codeplex.com/releases/view/107605)
stránku.
Kromě těchto funkcí obsahuje tato verze NuGetu také řadu dalších oprav chyb. Ve vydané verzi bylo vyřešeno celkem 97 problémů. Úplný seznam pracovních položek opravených v NuGetu 2.7 najdete v souboru [NuGet Issue Tracker for this release](https://nuget.codeplex.com/workitem/list/advanced?release=NuGet%202.7&status=all)
.