Číst v angličtině

Sdílet prostřednictvím


Zpráva k vydání verze NuGet 2.1

Poznámky k | verzi NuGet 2.0 NuGet 2.2 k vydání verze

NuGet 2.1 byl vydán 4. října 2012.

Hierarchický Nuget.Config

NuGet 2.1 poskytuje větší flexibilitu při řízení nastavení NuGetu rekurzivním procházením struktury složek a NuGet.Config následným sestavením konfigurace ze sady nalezených souborů. Představte si například scénář, ve kterém má tým interní úložiště balíčků pro sestavení CI jiných interních závislostí. Struktura složek pro jednotlivé projekty může vypadat takto:

C:\
C:\myteam\
C:\myteam\solution1
C:\myteam\solution1\project1

Kromě toho platí, že pokud je pro řešení povolené obnovení balíčku, bude existovat také následující složka:

C:\myteam\solution1\.nuget

Abychom měli interní úložiště balíčků týmu dostupné pro všechny projekty, na kterých tým pracuje, a zároveň ho nepřístupňuje pro každý projekt na počítači, můžeme vytvořit nový soubor Nuget.Config a umístit ho do složky c:\myteam. Neexistuje způsob, jak určit konkrétní složku balíčků pro každý projekt.

<configuration>
    <packageSources>
    <add key="Official project team source" value="http://teamserver/api/v2/" />
    </packageSources>
    <disabledPackageSources />
    <activePackageSource>
    <add key="Official project team source" value="http://teamserver/api/v2/" />
    </activePackageSource>
</configuration>

Teď vidíme, že zdroj byl přidán spuštěním příkazu "nuget.exe sources" z libovolné složky pod c:\myteam, jak je znázorněno níže:

Package sources from parent nuget config

NuGet.Config soubory se hledají v následujícím pořadí:

  1. .nuget\Nuget.Config
  2. Rekurzivní procházka ze složky projektu do kořenového adresáře
  3. Global Nuget.Config (%appdata%\NuGet\Nuget.Config)

Konfigurace jsou než použity v obráceném pořadí, což znamená, že na základě výše uvedeného pořadí by se jako první použil globální Nuget.Config, následované zjištěnými soubory Nuget.Config z kořenové složky do složky projektu, následované .nuget\Nuget.Config. To je zvlášť důležité, pokud používáte <clear/> element k odebrání sady položek z konfigurace.

Určení umístění složky Packages

V minulosti NuGet spravoval balíčky řešení ze známé složky Packages, která se nachází pod kořenovou složkou řešení. V případě vývojových týmů s mnoha různými řešeními, která mají nainstalované balíčky NuGet, to může vést k tomu, že se stejný balíček instaluje na mnoha různých místech v systému souborů.

NuGet 2.1 poskytuje podrobnější kontrolu nad umístěním složky packages prostřednictvím repositoryPath elementu NuGet.Config v souboru. Na základě předchozího příkladu podpory hierarchické Nuget.Config předpokládejme, že chceme mít všechny projekty ve složce C:\myteam\ sdílenou stejnou složku balíčků. Chcete-li toho dosáhnout, jednoduše přidejte následující položku do c:\myteam\Nuget.Config.

<configuration>
    <config>
    <add key="repositoryPath" value="C:\myteam\teampackages" />
    </config>
    ...
</configuration>

V tomto příkladu určuje sdílený Nuget.Config soubor složku sdílených balíčků pro každý projekt vytvořený pod C:\myteam bez ohledu na hloubku. Mějte na paměti, že pokud máte existující složku balíčků pod kořenem řešení, musíte ji odstranit, než NuGet umístí balíčky do nového umístění.

Podpora přenosných knihoven

Přenosné knihovny je funkce poprvé představená v .NET 4, která umožňuje vytvářet sestavení, která mohou fungovat bez úprav na různých platformách Microsoftu, od verzí the.NET Framework po Silverlight až po Windows Telefon a dokonce i Xbox 360 (v tuto chvíli NuGet nepodporuje přenosný cíl knihovny Xbox). Rozšířením konvencí balíčků pro verze a profily architektury teď NuGet 2.1 podporuje přenosné knihovny tím, že umožňuje vytvářet balíčky, které mají složenou architekturu a cílové lib složky profilu.

Představte si například následující cílové platformy knihovny přenosných tříd.

Portable library creation dialog

Po sestavení knihovny a spuštění příkazu nuget.exe pack MyPortableProject.csproj je možné novou strukturu složek balíčku přenosné knihovny zobrazit prozkoumáním obsahu vygenerovaného balíčku NuGet.

Portable library package layout

Jak vidíte, konvence názvů složek přenosné knihovny se řídí vzorem portable-{framework 1}+{framework n}, kde identifikátory rozhraní dodržují existující název architektury a konvence verzí. Jedna výjimka z konvencí názvu a verzí se nachází v identifikátoru architektury používaném pro windows Telefon. Tento moniker by měl používat název architektury wp (wp7, wp71 nebo wp8). Pokud například použijete silverlight-wp7, dojde k chybě.

Při instalaci balíčku vytvořeného z této struktury složek teď NuGet může použít své rozhraní a pravidla profilu na více cílů, jak je uvedeno v názvu složky. Za odpovídajícími pravidly NuGetu je princip, že "konkrétnější" cíle budou mít přednost před "méně specifickými" cíli. To znamená, že monikery, které cílí na konkrétní platformu, budou vždy upřednostňované před přenosnými, pokud jsou oba kompatibilní s projektem. Kromě toho, pokud je více přenosných cílů kompatibilních s projektem, bude NuGet upřednostňovat ten, ve kterém je sada podporovaných platforem "nejblíže" k projektu odkazujícímu na balíček.

Cílení na projekty Windows 8 a Windows Telefon 8

Kromě přidání podpory pro cílení na projekty přenosných knihoven poskytuje NuGet 2.1 nové rozhraní monikers pro projekty Windows 8 Store i Windows Telefon 8 a také některé nové obecné monikery pro projekty Windows Store a Windows Telefon, které budou snazší spravovat v budoucích verzích příslušných platforem.

U aplikací pro Windows 8 Store vypadají identifikátory takto:

NuGet 2.0 a starší NuGet 2.1
winRT45, . NETCore45 Windows, Windows8, win, win8

U projektů Windows Telefon vypadají identifikátory takto:
operační systém Telefon NuGet 2.0 a starší NuGet 2.1
Windows Telefon 7 silverlight3-wp wp, wp7, Windows Telefon, Windows Telefon 7
Windows Telefon 7.5 (Mango) silverlight4-wp71 wp71, Windows Telefon 71
Windows Phone 8 (nepodporuje se) wp8, Windows Telefon 8

Ve všech výše uvedených změnách budou staré názvy architektur nadále plně podporovány Nástrojem NuGet 2.1. V budoucnu by se měly nové názvy používat, protože budou stabilnější v budoucích verzích příslušných platforem. Nové názvy se *nebudou* podporovat ve verzích NuGetu starších než 2.1, proto naplánujte odpovídajícím způsobem, kdy se má přepnutí provést.

Vylepšené hledání v dialogovém okně Správce balíčků

V průběhu několika iterací byly v galerii NuGet zavedeny změny, které výrazně zlepšily rychlost a relevanci vyhledávání balíčků. Tato vylepšení však byla omezena na web nuget.org. NuGet 2.1 zpřístupňuje vylepšené vyhledávání prostřednictvím dialogového okna Správce balíčků NuGet. Představte si například, že jste chtěli najít balíček Windows Azure Ukládání do mezipaměti Preview. Rozumný vyhledávací dotaz pro tento balíček může být Azure Cache. V předchozích verzích dialogového okna správce balíčků by požadovaný balíček nebyl ani uveden na první stránce výsledků. V NuGetu 2.1 se ale požadovaný balíček zobrazí v horní části výsledků hledání.

Package manager dialog search

Vynucení aktualizace balíčku

Před NuGetem 2.1 by NuGet přeskočí aktualizaci balíčku, pokud nedošlo k vysokému počtu verzí. To zavedlo třecí plochy pro určité scénáře – zejména v případě scénářů sestavení nebo CI, kdy tým nechtěl zvýšit číslo verze balíčku s každým sestavením. Požadované chování bylo vynucení aktualizace bez ohledu na to. NuGet 2.1 to řeší příznakem přeinstalace. Například předchozí verze NuGetu by při pokusu o aktualizaci balíčku, který neměl novější verzi balíčku, výsledkem je následující:

PM> Update-Package Moq
No updates available for 'Moq' in project 'MySolution.MyConsole'.

S příznakem přeinstalace se balíček aktualizuje bez ohledu na to, jestli existuje novější verze.

PM> Update-Package Moq -Reinstall
Successfully removed 'Moq 4.0.10827' from MySolution.MyConsole.
Successfully uninstalled 'Moq 4.0.10827'.
Successfully installed 'Moq 4.0.10827'.
Successfully added 'Moq 4.0.10827' to MySolution.MyConsole.

Dalším scénářem, ve kterém příznak přeinstalace ukazuje, že je opětovné cílení na architekturu přínosné. Při změně cílové architektury projektu (například z .NET 4 na .NET 4.5), Update-Package -Reinstall může aktualizovat odkazy na správná sestavení pro všechny balíčky NuGet nainstalované v projektu.

Úprava zdrojů balíčků v sadě Visual Studio

V předchozích verzích NuGetu se aktualizace zdroje balíčku z dialogového okna možností sady Visual Studio vyžadovala odstranění a opětovné přidání zdroje balíčku. NuGet 2.1 zlepšuje tento pracovní postup tím, že podporuje aktualizaci jako funkci první třídy uživatelského rozhraní konfigurace.

Package manager configuration dialog

Opravy chyb

NuGet 2.1 obsahuje řadu oprav chyb. Úplný seznam pracovních položek opravených v NuGetu 2.0 najdete v souboru [NuGet Issue Tracker for this release](http://nuget.codeplex.com/workitem/list/advanced?keyword=&status=Fixed&type=All&priority=All&release=NuGet%202.1&assignedTo=All&component=All&sortField=LastUpdatedDate&sortDirection=Descending&page=0).