Zpráva k vydání verze NuGet 2.5
Zpráva k vydání verze NuGet 2.2.1– zpráva | k vydání verze NuGet 2.6
NuGet 2.5 byl vydán 25. dubna 2013. Tato verze byla tak velká, cítili jsme se nuceni přeskočit verze 2.3 a 2.4! K dnešnímu dni se jedná o největší verzi, kterou jsme měli pro NuGet, a v této verzi jsme skončili [160 work items](https://nuget.codeplex.com/workitem/list/advanced?release=NuGet%202.5&status=all)
.
Chtěli bychom poděkovat následujícím externím přispěvatelům za jejich významné příspěvky na NuGet 2.5:
[Daniel Plaisted](https://www.codeplex.com/site/users/view/dsplaisted)
(@dsplaisted)[#2847](https://nuget.codeplex.com/workitem/2847)
- Přidejte MonoAndroid, MonoTouch a MonoMac do seznamu známých identifikátorů cílové architektury.
[Andres G. Aragoneses](https://www.codeplex.com/site/users/view/knocte)
(@knocte)[#2865](https://nuget.codeplex.com/workitem/2865)
– Oprava pravopisu operačního systému citlivéhoNuGet.targets
na malá a velká písmena
[David Fowler](https://www.codeplex.com/site/users/view/dfowler)
(@davidfowl)- Vytvořte řešení na mono.
[Andrew Theken](https://www.codeplex.com/site/users/view/atheken)
(@atheken)- Oprava selhání testů jednotek na Mono
[Olivier Dagenais](https://www.codeplex.com/site/users/view/OliIsCool)
(@OliIsCool)[#2920](https://nuget.codeplex.com/workitem/2920)
– příkaz nuget.exe pack nerozšíruje vlastnosti do nástroje MSBuild.
[Miroslav Bajtos](https://www.codeplex.com/site/users/view/MiroslavBajtos)
(@bajtos)[#1511](https://nuget.codeplex.com/workitem/1511)
- Upravený kód zpracování XML pro zachování formátování.
[Adam Ralph](http://www.codeplex.com/site/users/view/adamralph)
(@adamralph)- Přidali jsme rozpoznaná slova do vlastního slovníku, aby bylo možné build.cmd uspět.
[Bruno Roggeri](https://www.codeplex.com/site/users/view/broggeri)
- Oprava testů jednotek při spuštění v lokalizovaném VS
[Gareth Evans](https://www.codeplex.com/site/users/view/garethevans)
- Extrahované rozhraní z PackageService
[Maxime Brugidou](https://www.codeplex.com/site/users/view/brugidou)
(@brugidou)[#936](https://nuget.codeplex.com/workitem/936)
– Zpracování závislostí projektu při balení
[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)
– Podpora hesla pro vymazání textu při ukládání přihlašovacích údajů ke zdroji balíčků v souborech nuget.cofig
[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)
– Oprava popisu nápovědy k získání balíčku
Také si vážíme následujících jednotlivců, kteří hledají chyby s verzí NuGet 2.5 Beta/RC, které byly schváleny a opraveny před finální verzí:
[Tony Wall](https://www.codeplex.com/site/users/view/CodeChief)
(@CodeChief)[#3200](https://nuget.codeplex.com/workitem/3200)
– MSTest nefunguje s nejnovějšími buildy NuGet 2.4 a 2.5
Jednou z nejžádanějších funkcí je možnost přepsat soubory obsahu, které už existují na disku, když je součástí balíčku NuGet. Počínaje verzí NuGet 2.5 jsou tyto konflikty identifikovány a zobrazí se výzva k přepsání souborů, zatímco dříve se tyto soubory vždy přeskočily.
Aktualizace nuget.exe a Install-Package teď mají novou možnost -FileConflictAction, která nastaví výchozí nastavení pro scénáře příkazového řádku.
Nastavte výchozí akci, pokud soubor z balíčku již v cílovém projektu existuje. Pokud chcete vždy přepsat soubory, nastavte na hodnotu Přepsání. Pokud chcete přeskočit soubory, nastavte na Ignorovat. Pokud není zadaný, zobrazí se výzva pro každý konfliktní soubor.
Na nejvyšší úrovni balíčku NuGet byla vytvořena nová konvenční složka. Jako partnerský vztah \lib
\content
\tools
a teď můžete do balíčku zahrnout \build
složku. V této složce můžete umístit dva soubory s pevnými názvy nebo {packageid}.targets
{packageid}.props
. Tyto dva soubory můžou být buď přímo v build
rámci, nebo v rámci složek specifických pro architekturu stejně jako ostatní složky. Pravidlo pro výběr nejvhodnější složky architektury je úplně stejné jako v těch.
Když NuGet nainstaluje balíček se soubory \build, přidá do souboru projektu prvek MSBuild <Import>
odkazující na .targets
soubory a .props
soubory. Soubor .props
se přidá v horní části, zatímco .targets
soubor se přidá do dolní části.
Před 2.5 může uživatel v .nuspec
souboru zadat pouze referenční soubory, které se mají přidat pro všechny architektury. Nyní s touto novou funkcí ve verzi 2.5 může uživatel vytvořit <reference/>
prvek pro každou z podporovaných platforem, například:
<references>
<group targetFramework="net45">
<reference file="a.dll" />
</group>
<group targetFramework="netcore45">
<reference file="b.dll" />
</group>
<group>
<reference file="c.dll" />
</group>
</references>
Tady je tok, jak NuGet přidává odkazy na projekty založené na .nuspec
souboru:
lib
Vyhledejte složku, která je vhodná pro cílovou architekturu, a získejte seznam sestavení z této složky.- Samostatně vyhledejte skupinu odkazů, která je vhodná pro cílovou architekturu, a získejte seznam sestavení z této skupiny. Referenční skupina bez zadané cílové architektury je záložní skupina.
- Najděte průsečík dvou seznamů a použijte ho jako odkazy, které chcete přidat.
Tato nová funkce umožní autorům balíčků používat funkci Reference k použití podmnožina sestavení na různé architektury, pokud by jinak potřebovali mít duplicitní sestavení ve více lib
složkách.
Poznámka: K použití této funkce musíte v současné době používat balíček nuget.exe; Průzkumník balíčků NuGet ho zatím nepodporuje.
Mnozí z vás vědí o rutině PowerShellu Update-Package, která aktualizuje všechny balíčky; teď je to snadný způsob, jak to udělat také prostřednictvím uživatelského rozhraní.
Pokud chcete vyzkoušet tuto funkci:
- Vytvoření nové aplikace ASP.NET MVC
- Spuštění dialogového okna Spravovat balíčky NuGet
- Vyberte Aktualizace.
- Klikněte na tlačítko Aktualizovat vše.
Nyní nuget.exe pack procesy příkazů odkazované na projekty s následujícími pravidly:
- Pokud odkazovaný projekt obsahuje odpovídající
.nuspec
soubor, například existuje soubor, který je volánproj1.nuspec
ve stejné složce jakoproj1.csproj
, pak se tento projekt přidá jako závislost do balíčku pomocí ID a verze načtené.nuspec
ze souboru. - V opačném případě se soubory odkazovaného projektu zabalí do balíčku. Projekty odkazované tímto projektem se pak budou zpracovávat rekurzivně pomocí stejných pravidel.
- Všechny knihovny DLL a
.pdb
.exe
soubory jsou přidány. - Všechny ostatní soubory obsahu se přidají.
- Všechny závislosti se sloučí.
To umožňuje, aby odkazovaný projekt byl považován za závislost, pokud existuje .nuspec
soubor, jinak se stane součástí balíčku.
Další podrobnosti najdete tady: [http://nuget.codeplex.com/workitem/936](http://nuget.codeplex.com/workitem/936)
Nový atribut metadat s názvem minClientVersion teď může značit minimální verzi klienta NuGet potřebnou k využívání balíčku.
Tato funkce pomáhá autorovi balíčku určit, že balíček bude fungovat až po konkrétní verzi NuGetu. Po přidání nových .nuspec
funkcí po NuGetu 2.5 budou balíčky moci deklarovat minimální verzi NuGetu.
<metadata minClientVersion="2.6">
Pokud má uživatel nainstalovaný NuGet 2.5 a balíček se identifikuje jako vyžadování verze 2.6, zobrazí se uživateli vizuální upozornění, že balíček nebude možné nainstalovat. Uživatel se pak bude řídit aktualizací své verze NuGetu.
Tím se zlepší stávající prostředí, ve kterém se balíčky začnou instalovat, ale pak selžou indikující, že byla identifikována nerozpoznaná verze schématu.
Před NuGetem 2.5 se při instalaci balíčku, který závisí na již nainstalovaném balíčku v projektu, bude závislost v rámci nové instalace aktualizována, i když existující verze závislosti splnila.
Počínaje NuGetem 2.5, pokud už je verze závislosti splněná, závislost se během jiných instalací balíčků neaktualizuje.
Scénář:
- Zdrojové úložiště obsahuje balíček B verze 1.0.0 a 1.0.2. Obsahuje také balíček A, který má závislost na B (>= 1.0.0).
- Předpokládejme, že aktuální projekt již má nainstalovaný balíček B verze 1.0.0. Teď chcete nainstalovat balíček A.
V NuGetu 2.2 a starším:
- Při instalaci balíčku A nuGet automaticky aktualizuje B na verzi 1.0.2, i když stávající verze 1.0.0 již splňuje omezení verze závislosti, což je >= 1.0.0.
V NuGetu 2.5 a novějším:
- NuGet už nebude aktualizovat B, protože zjistí, že stávající verze 1.0.0 splňuje omezení verze závislosti.
Další informace o této změně najdete v podrobných [work item](https://nuget.codeplex.com/workitem/1681)
informacích a souvisejících informacích [discussion thread](https://nuget.codeplex.com/discussions/436712)
.
Pokud řešíte potíže nuget.exe nebo jen zajímáte, jaké požadavky HTTP se provádějí během operací, přepínač podrobností podrobně zobrazí výstup všech provedených požadavků HTTP.
Před NuGet 2.5, pokud jste se pokusili spustit příkaz "nuget.exe push" do zdroje balíčku na základě cesty UNC nebo místní složky, nabízené oznámení by se nezdařilo. S nedávno přidanou hierarchickou funkcí konfigurace se stala společná pro nuget.exe, že je potřeba cílit na zdroj UNC/složky nebo galerii NuGet založenou na protokolu HTTP.
Počínaje NuGetem 2.5, pokud nuget.exe identifikuje zdroj UNC/složky, provede kopírování souboru do zdroje.
Teď bude fungovat následující příkaz:
nuget push -source \\mycompany\repo\ mypackage.1.0.0.nupkg
nuget.exe příkazy, které přistupují ke konfiguraci (kromě specifikace a balíčku), teď podporují novou možnost -ConfigFile, která vynutí použití konkrétního konfiguračního souboru místo výchozího konfiguračního souboru na adrese %AppData%\nuget\Nuget.Config.
Příklad:
nuget sources add -name test -source http://test -ConfigFile C:\test\.nuget\Nuget.Config
Díky NuGetu 2.5 je teď nástroje NuGet dostupné pro nativní projekty v sadě Visual Studio. Očekáváme, že většina nativních balíčků bude využívat funkci importů MSBuild výše pomocí nástroje vytvořeného projektem CoApp. Další informace najdete v podrobnostech o nástroji na coapp.org webu.
Název cílové architektury "nativní" se zavádí pro balíčky, které při instalaci balíčku do nativního projektu zahrnují soubory v \build, \content a \tools. Složka lib se nepoužívá pro nativní projekty.