Megosztás:


NuGet 2.1 kibocsátási megjegyzések

NuGet 2.0 kibocsátási megjegyzések | NuGet 2.2 kibocsátási megjegyzések

A NuGet 2.1 2012. október 4-én jelent meg.

Hierarchikus Nuget.Config

A NuGet 2.1 nagyobb rugalmasságot biztosít a NuGet-beállítások szabályozásában, mivel rekurzív módon lépeget a mappastruktúrában, és fájlokat keres NuGet.Config , majd a konfigurációt az összes talált fájlból építi fel. Vegyük például azt a forgatókönyvet, amelyben a csapat rendelkezik egy belső csomagtárral más belső függőségek CI-buildjeihez. Az egyes projektek mappastruktúrája a következőhöz hasonlóan nézhet ki:

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

Emellett ha a csomag visszaállítása engedélyezve van a megoldáshoz, a következő mappa is létezik:

C:\myteam\solution1\.nuget

Annak érdekében, hogy a csapat belső csomagtárháza elérhető legyen az összes projekthez, amelyen a csapat dolgozik, miközben nem teszi elérhetővé a gép összes projektjéhez, létrehozhatunk egy új Nuget.Config-fájlt, és elhelyezhetjük a c:\myteam mappában. Projektenként nem lehet csomagmappát beállítani.

<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>

Most már láthatjuk, hogy a forrást úgy adták hozzá, hogy a c:\myteam alatti bármelyik mappából futtatja a "nuget.exe források" parancsot, ahogy az alább látható:

Csomagforrások a szülő NuGet-konfigurációból

NuGet.Config fájlok keresése a következő sorrendben történt:

  1. .nuget\Nuget.Config
  2. Rekurzív bejárás a projektmappától a gyökérkönyvtárig
  3. Globális Nuget.Config (%appdata%\NuGet\Nuget.Config)

A konfigurációk fordított sorrendben vannak alkalmazva, ami azt jelenti, hogy a fenti sorrend alapján először a globális Nuget.Config lesz alkalmazva, majd a felderített Nuget.Config-fájlok a gyökértől a projektmappáig, majd a .nuget\Nuget.Config. Ez különösen akkor fontos, ha az <clear/> elemet arra használja, hogy eltávolítson egy elemkészletet a konfigurációból.

A "packages" mappa helyének megadása

Korábban a NuGet felügyelte a megoldás csomagjait a megoldás gyökérmappája alatt található ismert "csomagok" mappából. Azoknak a fejlesztői csapatoknak, amelyekben számos különböző megoldás van telepítve NuGet-csomagokkal, ez azt eredményezheti, hogy ugyanazt a csomagot a fájlrendszer számos különböző pontján telepítik.

A NuGet 2.1 részletesebben szabályozza a csomagok mappájának helyét a repositoryPathNuGet.Config fájl elemén keresztül. A hierarchikus Nuget.Config-támogatás előző példájára építve tegyük fel, hogy a C:\myteam\ alatt lévő összes projektet ugyanazzal a csomagmappával szeretnénk megosztani. Ehhez egyszerűen adja hozzá a következő bejegyzést a c:\myteam\Nuget.Config-hez.

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

Ebben a példában a megosztott Nuget.Config fájl egy megosztott csomagmappát határoz meg minden olyan projekthez, amely a C:\myteam alatt jön létre, mélységtől függetlenül. Vegye figyelembe, hogy ha a megoldás gyökérkönyvtára alatt van egy meglévő csomagmappa, törölnie kell, mielőtt a NuGet a csomagokat az új helyre helyezi.

Hordozható könyvtárak támogatása

A hordozható kódtárak a .NET 4-ben elsőként bevezetett funkció, amely lehetővé teszi olyan szerelvények összeállítását, amelyek módosítás nélkül használhatók a Különböző Microsoft-platformokon, a the.NET Framework verziójától a Silverlighton át a Windows Phone-on és még az Xbox 360-on is (bár jelenleg a NuGet nem támogatja az Xbox hordozható könyvtárcélját). A keretrendszerverziók és - profilok csomagkonvenciáinak kibővítésével a NuGet 2.1 mostantól támogatja a hordozható kódtárakat azáltal, hogy lehetővé teszi összetett keretrendszert és profil célmappákat lib tartalmazó csomagok létrehozását.

Példaként tekintse meg a következő hordozható osztálykódtár elérhető célplatformjait.

Hordozható könyvtár létrehozási párbeszédablak

A kódtár létrehozása és a parancs nuget.exe pack MyPortableProject.csproj futtatása után az új hordozható kódtárcsomag mappastruktúrája a létrehozott NuGet-csomag tartalmának vizsgálatával tekinthető meg.

Hordozható kódtárcsomag elrendezése

Amint látható, a hordozható kódtár mappanév-konvenciója a "portable-{framework 1}+{framework n}" mintát követi, ahol a keretrendszerazonosítók a meglévő keretrendszernév- és verziókonvenciákat követik. A Windows Phone-hoz használt keretrendszer-azonosító kivételt képez a név- és verziókonvenciók alól. Ennek a monikernek a "wp" (wp7, wp71 vagy wp8) keretrendszernevet kell használnia. A "silverlight-wp7" használata például hibát eredményez.

Az ebből a mappastruktúrából létrehozott csomag telepítésekor a NuGet mostantól több célra is alkalmazhatja a keretrendszer- és profilszabályokat a mappanévben megadott módon. A NuGet egyező szabályai mögött az az alapelv áll, hogy a "konkrétabb" célok elsőbbséget élveznek a "kevésbé specifikus" célokkal szemben. Ez azt jelenti, hogy az adott platformot célzó monikerek mindig előnyben lesznek részesítve a hordozhatókkal szemben, ha mindkettő kompatibilis egy projekttel. Továbbá, ha több hordozható cél is kompatibilis egy projekttel, a NuGet előnyben részesíti azt, ahol a támogatott platformok "legközelebbiek" a csomagra hivatkozó projekthez.

Windows 8- és Windows Phone 8-projektek megcélzása

A nuGet 2.1 amellett, hogy támogatja a hordozható könyvtárprojekteket, új keretrendszer-monikereket biztosít a Windows 8 Áruház és a Windows Phone 8-projektekhez, valamint néhány új általános monikert a Windows Áruházbeli és a Windows Phone-projektekhez, amelyek könnyebben kezelhetők lesznek a megfelelő platformok jövőbeli verzióiban.

Windows 8 Store-alkalmazások esetén az azonosítók a következőképpen néznek ki:

NuGet 2.0 és korábbi verziók NuGet 2.1
winRT45, . NETCore45 Windows, Windows8, win, win8

Windows Phone-projektek esetén az azonosítók a következőképpen néznek ki:
Telefonos operációs rendszer NuGet 2.0 és korábbi verziók NuGet 2.1
Windows Phone 7 silverlight3-wp wp, wp7, WindowsPhone, WindowsPhone7
Windows Phone 7.5 (Mango) silverlight4-wp71 wp71, WindowsPhone71
Windows Phone 8 (nem támogatott) wp8, WindowsPhone8

A fenti módosítások mindegyikében a NuGet 2.1 továbbra is teljes mértékben támogatja a régi keretrendszerneveket. A továbbiakban az új neveket kell használni, mivel ezek stabilabbak lesznek a megfelelő platformok jövőbeli verzióiban. Az új nevek *nem* lesznek támogatottak a NuGet 2.1 előtti verzióiban, ezért tervezze meg ennek megfelelően, hogy mikor váltson.

Továbbfejlesztett keresés a Package Manager párbeszédpanelen

Az elmúlt több iterációban olyan módosításokat vezettek be a NuGet-katalógusban, amelyek jelentősen javították a csomagkeresések sebességét és relevanciáját. Ezek a fejlesztések azonban csak a nuget.org webhelyre korlátozódtak. A NuGet 2.1 a Továbbfejlesztett keresési felületet teszi elérhetővé a NuGet-csomagkezelő párbeszédpanelen. Tegyük fel például, hogy a Windows Azure Caching Preview csomagot szeretné megtalálni. A csomag ésszerű keresési lekérdezése lehet az "Azure Cache". A csomagkezelő párbeszédpanel korábbi verzióiban a kívánt csomag még az eredmények első oldalán sem szerepel. A NuGet 2.1-ben azonban a kívánt csomag megjelenik a keresési eredmények tetején.

Csomagkezelő párbeszédpanel keresése

Csomagfrissítés kényszerítése

A NuGet 2.1 előtt a NuGet kihagyta a csomag frissítését, ha nem volt magas verziószám. Ez súrlódást vezetett be bizonyos forgatókönyvek esetében – különösen olyan buildelési vagy CI-forgatókönyvek esetében, ahol a csapat nem akarta növelni a csomag verziószámát az egyes buildekkel. A kívánt viselkedés a frissítés kényszerítése volt, bármilyen körülmények között. A NuGet 2.1 ezt az "újratelepítés" jelzővel kezeli. A NuGet korábbi verziói például a következőket eredményeznék, ha olyan csomagot próbálnak frissíteni, amely nem rendelkezik újabb csomagverzióval:

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

Az újratelepítési jelzővel a csomag frissül, függetlenül attól, hogy van-e újabb verzió.

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.

Egy másik forgatókönyv, amikor az újratelepítés jelzője hasznosnak bizonyul, a keretrendszer újracélzása. A projekt célkeretének módosításakor (például .NET 4-ről .NET 4.5-ös verzióra) Update-Package -Reinstall frissítheti a projektben telepített összes NuGet-csomag megfelelő szerelvényekre mutató hivatkozásait.

Csomagforrások szerkesztése a Visual Studióban

A NuGet korábbi verzióiban a Visual Studio beállításai párbeszédpanelen lévő csomagforrás frissítéséhez törölni és újra hozzá kellett adni a csomag forrását. A NuGet 2.1 a konfigurációs felhasználói felület első osztályú funkciójaként támogatja a frissítést.

A Csomagkezelő konfigurációs párbeszédpanelje

Hibajavítások

A NuGet 2.1 számos hibajavítást tartalmaz. A NuGet 2.0-ban rögzített munkaelemek teljes listájáért tekintse meg a [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).