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.
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:
NuGet.Config
soubory se hledají v následujícím pořadí:
.nuget\Nuget.Config
- Rekurzivní procházka ze složky projektu do kořenového adresáře
- 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.
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í.
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.
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.
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.
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.
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í.
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.
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.
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)
.