Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
NuGet 2.6.1 a WebMatrixhoz – kibocsátási megjegyzések | NuGet 2.7.1 kibocsátási megjegyzések
A NuGet 2.7 2013. augusztus 22-én jelent meg.
Köszönetnyilvánítás
Köszönjük a következő külső közreműködőknek a NuGet 2.7-hez való jelentős hozzájárulásukat:
-
[Mike Roth](http://www.codeplex.com/site/users/view/mxrss)(@mxrss)- A licenc URL-jének megjelenítése a csomagok részletes felsorolásakor.
-
[Adam Ralph](http://www.codeplex.com/site/users/view/adamralph)(@adamralph)-
[#1956](http://nuget.codeplex.com/workitem/1956)– A developmentDependency attribútum hozzáadása apackages.configpack parancshoz és annak használata csak futtatókörnyezeti csomagok belefoglalásához
-
-
[Rafael Nicoletti](http://www.codeplex.com/site/users/view/tkrafael)(@tkrafael)- Kerülje a duplikált tulajdonságkulcsokat a nuget.exe pack parancsban.
-
[Ben Phegan](http://www.codeplex.com/site/users/view/benphegan)(@BenPhegan)-
[#2610](http://nuget.codeplex.com/workitem/2610)- Növelje a gép gyorsítótárának méretét 200-ra.
-
-
[Slava Trenogin](http://www.codeplex.com/site/users/view/derigel)(@derigel)-
[#3217](http://nuget.codeplex.com/workitem/3217)– A NuGet párbeszédpanel hibájának javítása, amely miatt a frissítések a rossz lapon jelennek meg. - A Project.TargetFramework javítása null értékű lehet a ProjectManagerben
-
[#3248](http://nuget.codeplex.com/workitem/3248)- A SharedPackageRepository FindPackage/FindPackagesById nem talál csomagot, ha a packageId nem létezik
-
-
[Kevin Boyle](http://www.codeplex.com/site/users/view/KevinBoyleRG)(@kevfromireland)-
[#3234](http://nuget.codeplex.com/workitem/3234)– Nomad-projekt támogatásának engedélyezése
-
-
[Corin Blaikie](http://www.codeplex.com/site/users/view/corinblaikie)(@corinblaikie)-
[#3252](http://nuget.codeplex.com/workitem/3252)– A push parancs javítása sikertelen 0-s kilépési kóddal, ha a fájl nem létezik.
-
[Martin Veselý](http://www.codeplex.com/site/users/view/veselkamartin)-
[#3226](http://nuget.codeplex.com/workitem/3226)– Hiba kijavítása Add-BindingRedirect paranccsal, amikor egy projekt adatbázisprojektre hivatkozik.
-
-
[Miroslav Bajtos](http://www.codeplex.com/site/users/view/miroslavbajtos)(@bajtos)-
[#2891](http://nuget.codeplex.com/workitem/2891)- Javítva lett a nuget.pack helyettesítő karakterének hibás feldolgozása az „exclude” attribútumban.
-
-
[Justin Dearing](http://www.codeplex.com/site/users/view/zippy1981)(@zippy1981)-
[#3307](http://nuget.codeplex.com/workitem/3307)- A hibaNuGet.targetsjavítása nem adja át a $(Platform) paramétert a csomagok visszaállítása közben a nuget.exe-nek.
-
[Brian Federici](http://www.codeplex.com/site/users/view/benerdin)-
[#3294](http://nuget.codeplex.com/workitem/3294)- Kijavítottuk nuget.exe csomagparancsban található hibát, amely lehetővé teszi az azonos nevű, de eltérő burkolatú fájlok hozzáadását, ami végül "Az elem már létezik" kivételt okoz.
-
-
[Daniel Cazzulino](http://www.codeplex.com/site/users/view/dcazzulino)(@kzu)-
[#2990](http://nuget.codeplex.com/workitem/2990)– Verzió tulajdonság hozzáadása a NetPortableProfile osztályhoz.
-
[David Simner](https://www.codeplex.com/site/users/view/DavidSimner)-
[#3460](https://nuget.codeplex.com/workitem/3460)- A NullReferenceException hiba kijavítása, ha a requireApiKey = true értéket kéri, de az X-NUGET-APIKEY fejléc nem található
-
-
[Michael Friis](https://www.codeplex.com/site/users/view/friism)(@friism)-
[#3278](https://nuget.codeplex.com/workitem/3278)- Kijavítja a NuGet.Build célfájljait, hogy megfelelően működjön a MonoDevelop-on
-
-
[Pranav Krishnamoorthy](https://www.codeplex.com/site/users/view/pranavkm)(@pranav_km)- A visszaállítási parancs teljesítményének javítása a párhuzamosítás növelésével
A kiadás figyelemre méltó funkciói
Csomag-visszaállítás alapértelmezés szerint (implicit hozzájárulással)
A NuGet 2.7 új megközelítést vezet be a csomag-visszaállításhoz, és egy jelentős akadályt is leküzd: a csomag-visszaállítási hozzájárulás alapértelmezés szerint be van kapcsolva! Az új megközelítés és az implicit hozzájárulás kombinációja drasztikusan leegyszerűsíti a csomag-visszaállítási forgatókönyveket.
Implicit hozzájárulás
A NuGet 2.0-s, 2.1-es, 2.2-es, 2.5-ös és 2.6-os verziójával a felhasználóknak explicit módon engedélyezni kellett a NuGet számára a hiányzó csomagok letöltését a buildelés során. Ha ezt a hozzájárulást nem adták volna meg explicit módon, akkor a csomag-visszaállítást engedélyező megoldások létrehozása nem sikerült volna, amíg a felhasználó nem adott engedélyt.
A NuGet 2.7-től kezdődően a csomag-visszaállítási hozzájárulás alapértelmezés szerint be van kapcsolva, miközben lehetővé teszi a felhasználók számára, hogy igény szerint kifejezetten kikapcsolják a csomag-visszaállítást a NuGet beállításainak jelölőnégyzetével a Visual Studióban. Az implicit hozzájárulás módosítása a NuGetet a következő környezetekben érinti:
- Visual Studio 2013 előzetes verzió
- Visual Studio 2012
- Visual Studio 2010
- nuget.exe Command-Line segédprogram
Automatikus csomag-visszaállítás a Visual Studióban
A NuGet 2.7-től kezdve a NuGet automatikusan letölti a hiányzó csomagokat a Visual Studióban való buildelés során, még akkor is, ha a csomag-visszaállítás nincs explicit módon engedélyezve a megoldáshoz. Ez az automatikus csomag-visszaállítás a Visual Studióban történik egy projekt vagy megoldás létrehozásakor, de az MSBuild meghívása előtt. Ez néhány jelentős előnnyel jár:
- Nincs szükség a "NuGet-csomag visszaállításának engedélyezése" kézmozdulat használatára a megoldáson
- A projekteket nem kell módosítani, és a NuGet nem módosítja a projektet annak biztosítása érdekében, hogy a csomag visszaállítása engedélyezve legyen
- MSBuild meghívása előtt minden NuGet-csomag visszaáll, beleértve azokat, amelyek MSBuild importálásokat tartalmaznak props/targets fájlokhoz, így ezek a props/targets fájlok megfelelően felismerésre kerülnek a buildelés során.
Az automatikus csomag-visszaállítás Visual Studióban való használatához csak egy (in)műveletet kell elvégeznie:
- Ne jelentkezzen be a
packagesmappába
Számos módon kihagyható a saját packages mappa a verziókezelésből. További információkért tekintse meg a Csomagok és a Forráskövetés témakört.
Bár az automatikus csomag-visszaállítási hozzájárulást minden felhasználó implicit módon elfogadja, a Visual Studióban a Package Manager beállításaival egyszerűen leiratkozhat.
Egyszerűsített csomag-visszaállítás a parancssorból
A NuGet 2.7 új funkciót vezet be a nuget.exe: nuget.exe restore
Ez az új visszaállítási parancs lehetővé teszi egy megoldás összes csomagjának egyszerű visszaállítását egyetlen paranccsal, ha argumentumként elfogad egy megoldásfájlt vagy mappát. Emellett ez az argumentum akkor is kifejezésre kerül, ha az aktuális mappában csak egyetlen megoldás található. Ez azt jelenti, hogy az alábbi műveletek egyetlen megoldásfájlt (MySolution.sln) tartalmazó mappából származnak:
- nuget.exe visszaállítás MySolution.sln
- nuget.exe visszaállítás.
- nuget.exe visszaállítás
A Visszaállítás parancs megnyitja a megoldásfájlt, és megkeresi a megoldáson belüli összes projektet. Innen megtalálja az packages.config egyes projektek fájljait, és visszaállítja az összes talált csomagot. A .nuget\packages.config fájlban található megoldásszintű csomagokat is visszaállítja. Az új visszaállítási paranccsal kapcsolatos további információk a Command-Line hivatkozásban találhatók.
Az új csomag-visszaállítási munkafolyamat
Izgatottan várjuk a csomag-visszaállítás ezen módosításait, mivel új munkafolyamatot vezet be. Ha ki szeretné kihagyni a csomagokat a forrásvezérlőből, egyszerűen nem véglegesíti a packages mappát. A megoldást megnyitó és létrehozó Visual Studio-felhasználók automatikusan visszaállítják a csomagokat. Parancssori buildek esetén egyszerűen hívja meg a nuget.exe restore parancsot, mielőtt meghívná a msbuild-t. Nem kell többé a "NuGet-csomag visszaállításának engedélyezése" kézmozdulatot használnia a megoldáson, és a továbbiakban nem kell módosítani a projekteket a build módosításához. Ez az MSBuild-importálást tartalmazó csomagok esetében is sokkal jobb élményt nyújt, különösen a NuGet legutóbbi funkciójával hozzáadott importok esetében, amelyek automatikusan importálják a props/célfájlokat a \build mappából.
A saját munkánk mellett néhány fontos partnerrel is dolgozunk az új megközelítés teljesebbé tétele érdekében. Ezekre még nincs konkrét ütemtervünk, de minden partner ugyanolyan izgatott, mint mi az új megközelítéssel kapcsolatban.
- Team Foundation Service – Azon dolgoznak, hogy integrálják a
nuget.exe restorehívást az alapértelmezett buildelési forgatókönyvekbe. - Windows Azure-webhelyek – Azon dolgoznak, hogy lehetővé tegyék a projekt Azure-ra való feltöltését, és a webhely létrehozása előtt meghívják a
nuget.exe restorekódot. - TeamCity – Frissítik a NuGet Installer beépülő modult a TeamCity 8.x-hez
- AppHarbor – Azon dolgoznak, hogy Ön lehessen képes leküldeni az adattárát az AppHarborba, és a megoldás létrehozása előtt
nuget.exe restoremeghívásra kerüljön.
A fenti partnerek mindegyike a saját nuget.exe példányát használná, így önnek nem lenne szüksége arra, hogy a saját megoldásában tartsa a nuget.exe-t.
Ismert problémák
A kezdeti 2.7-es kiadással nuget.exe visszaállítással kapcsolatban két ismert probléma merült fel, de 2013. 09. 06-án kijavítottuk őket a NuGet.CommandLine csomag frissítésével. Ez a frissítés a [NuGet 2.7 download page](https://nuget.codeplex.com/releases/view/107605) CodePlexen is elérhető. A(z) nuget.exe update -self parancs futtatása frissíti a rendszert a legújabb kiadásra.
A javítások a következők voltak:
[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)
Az új csomag-visszaállítási munkafolyamattal [Automatic Package Restore does not work for projects under a solution folder](https://nuget.codeplex.com/workitem/3625)kapcsolatos ismert probléma is fennáll. Ezt a problémát a NuGet 2.7.1-ben javítottuk.
Projekt újraépítési és frissítési felépítési hibák/figyelmeztetések
A projekt újracélzása vagy frissítése után sokszor azt tapasztalja, hogy egyes NuGet-csomagok nem működnek megfelelően. Sajnos nincs erre utaló jel, és nincs útmutatás a megoldáshoz. A NuGet 2.7-ben most néhány Visual Studio-eseményt használunk a projekt újratelepítése vagy frissítése során a telepített NuGet-csomagokat érintő módon történő felismerésre.
Ha azt észleljük, hogy bármelyik csomagját érintette a célzás módosítása vagy a frissítés, azonnali építési hibákat hozunk létre, hogy értesítsük Önt. Az azonnali buildelési hiba mellett egy jelölőt is megőrizünk requireReinstallation="true" a packages.config fájlban az összes olyan csomag esetében, amelyet érintett az újratargetálás, és a Visual Studio minden további buildje figyelmeztetést ad ezekre a csomagokra.
Bár a NuGet nem tudja automatikusan elvégezni az érintett csomagok újratelepítését, reméljük, hogy ez a jelzés és figyelmeztetés segít felderíteni, hogy mikor kell újratelepítenie a csomagokat. Dolgozunk a csomag újratelepítési útmutató dokumentációján is, amelybe ezek a hibaüzenetek irányítják.
NuGet-konfiguráció alapértelmezett beállításai
Sok vállalat belsőleg használja a NuGetet, de nehezen vezérelte a fejlesztőket, hogy nuget.org helyett belső csomagforrásokat használjanak. A NuGet 2.7 egy konfigurációs alapértelmezett funkciót vezet be, amely lehetővé teszi a gépszintű alapértelmezett beállítások megadását a következőhöz:
- Engedélyezett csomagforrások
- Regisztrált, de letiltott csomagforrások
- Az alapértelmezett nuget.exe feltöltési tároló
Ezek mindegyike konfigurálható a következő helyen található fájlon %ProgramData%\NuGet\NuGetDefaults.Configbelül: . Ha ez a konfigurációs fájl csomagforrásokat ad meg, akkor az alapértelmezett nuget.org csomagforrás nem lesz automatikusan regisztrálva, ehelyett a NuGetDefaults.Config-ban megadott források kerülnek regisztrálásra.
Bár nem szükséges használni ezt a funkciót, elvárjuk, hogy a vállalatok csoportházirenddel telepítsenek NuGetDefaults.Config fájlokat.
Vegye figyelembe, hogy ez a funkció soha nem eredményezi a csomagforrás eltávolítását a fejlesztő NuGet-beállításaiból. Ez azt jelenti, hogy ha a fejlesztő már használta a NuGetet, és ezért regisztrálta a nuget.org csomag forrását NuGetDefaults.Config , akkor a fájl létrehozása után nem törlődik.
A funkcióval kapcsolatos további információkért tekintse meg a NuGet-konfiguráció alapértelmezett beállításait .
Az alapértelmezett csomagforrás átnevezése
A NuGet mindig regisztrált egy "NuGet hivatalos csomagforrás" nevű alapértelmezett csomagforrást, amely a nuget.org-ra mutat. Ez a név terjengős volt, és azt sem adta meg, hogy valójában hová mutat. A két probléma megoldásához átneveztük ezt a csomagforrást egyszerűen "nuget.org" névre a felhasználói felületen. A csomag forrásának URL-címe is módosult, hogy tartalmazza a "www." előtagot. A NuGet 2.7 használata után a meglévő "NuGet hivatalos csomagforrás" automatikusan "nuget.org" névre, URL-címként pedig "https://www.nuget.org/api/v2/" lesz frissítve.
Teljesítménybeli fejlesztések
A 2.7-ben némi teljesítményjavítást hajtottunk végre, ami kisebb memóriaigényt, kevesebb lemezhasználatot és gyorsabb csomagtelepítést eredményez. Olyan intelligens lekérdezéseket készítettünk az OData-alapú adatforrásokra, amelyek csökkentik a teljes terhelést.
Új bővíthetőségi API-k
Új API-kat adtunk hozzá bővíthetőségi szolgáltatásainkhoz, hogy kitöltsük a hiányzó funkciók hiányát a korábbi kiadásokban.
IVsPackageInstallerServices
// 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);
IVsPackageInstaller
// 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);
Kizárólag fejlesztési célú függőségek
Ezt a funkciót Adam Ralph készítette, és lehetővé teszi a csomagkészítők számára, hogy deklarálják azokat a függőségeket, amelyeket csak a fejlesztési időszakban használtak, és nem igényelnek csomagfüggőségeket. Ha attribútumot ad hozzá egy developmentDependency="true" csomaghoz packages.config, nuget.exe pack az már nem fogja függőségként tartalmazni a csomagot.
A Windows Phone-alapú Visual Studio 2010 Express nem támogatott
Az új csomag-visszaállítási modellt a 2.7-ben egy új VSPackage implementálta, amely eltér a fő NuGet VSPackage-tól. Technikai probléma miatt ez az új VSPackage nem működik megfelelően a Windows Phone-alapú Visual Studio 2010 Express termékváltozatban, mivel ugyanazt a kódbázist más támogatott Visual Studio termékváltozatokkal is megosztjuk. Ezért a NuGet 2.7-től kezdve a Közzétett bővítményből elvetjük a Windows Phone-alapú Visual Studio 2010 Express támogatását. A Visual Studio 2010 Express for Web támogatása továbbra is szerepel a Visual Studio Bővítménytárban közzétett elsődleges bővítményben.
Mivel nem tudjuk, hány fejlesztő használja még a NuGet-et a Visual Studio ezen verziójában/kiadásában, külön Visual Studio-bővítményt teszünk közzé kifejezetten ezekhez a felhasználókhoz, és közzétesszük a CodePlexen (a Visual Studio bővítménytár helyett). Nem tervezzük továbbra is fenntartani ezt a bővítményt, de ha ez hatással van Önre, kérjük, jelezze nekünk a CodePlexen található probléma bejelentésével.
A NuGet Package Manager letöltéséhez (Windows Phone-alapú Visual Studio 2010 Expresshez) látogasson el a [NuGet 2.7 Downloads](https://nuget.codeplex.com/releases/view/107605) lapra.
Hibajavítások
Ezen funkciók mellett a NuGet ezen kiadása számos más hibajavítást is tartalmaz. A kiadásban összesen 97 problémát kezeltek. A NuGet 2.7-ben rögzített munkaelemek teljes listájáért tekintse meg a [NuGet Issue Tracker for this release](https://nuget.codeplex.com/workitem/list/advanced?release=NuGet%202.7&status=all).