Megosztás:


NuGet 2.5 kibocsátási megjegyzések

NuGet 2.2.1 kibocsátási megjegyzések | NuGet 2.6 kibocsátási megjegyzések

A NuGet 2.5 2013. április 25-én jelent meg. Ez a kiadás olyan nagy volt, hogy kénytelenek voltunk kihagyni a 2.3-at és a 2.4-es verziót! A mai napig ez a legnagyobb kiadásunk a NuGethez, és a kiadásban több mint [160 work items](https://nuget.codeplex.com/workitem/list/advanced?release=NuGet%202.5&status=all) található.

Köszönetnyilvánítás

Köszönjük a következő külső közreműködőknek a NuGet 2.5-höz való jelentős hozzájárulásukat:

  1. [Daniel Plaisted](https://www.codeplex.com/site/users/view/dsplaisted) (@dsplaisted)
    • [#2847](https://nuget.codeplex.com/workitem/2847) – A MonoAndroid, a MonoTouch és a MonoMac hozzáadása az ismert cél-keretrendszer-azonosítók listájához.
  2. [Andres G. Aragoneses](https://www.codeplex.com/site/users/view/knocte) (@knocte)
    • [#2865](https://nuget.codeplex.com/workitem/2865) – A kis- és nagybetűket megkülönböztető operációs rendszer számára a NuGet.targets helyesírásának javítása
  3. [David Fowler](https://www.codeplex.com/site/users/view/dfowler) (@davidfowl)
    • Építse meg a megoldást Monon.
  4. [Andrew Theken](https://www.codeplex.com/site/users/view/atheken) (@atheken)
    • A Mono-n sikertelen egységtesztek javítása.
  5. [Olivier Dagenais](https://www.codeplex.com/site/users/view/OliIsCool) (@OliIsCool)
    • [#2920](https://nuget.codeplex.com/workitem/2920) - nuget.exe csomagparancs nem propagálja a tulajdonságokat az MSBuildbe
  6. [Miroslav Bajtos](https://www.codeplex.com/site/users/view/MiroslavBajtos) (@bajtos)
    • [#1511](https://nuget.codeplex.com/workitem/1511) – Módosított XML-kezelési kód a formázás megőrzése érdekében.
  7. [Adam Ralph](http://www.codeplex.com/site/users/view/adamralph) (@adamralph)
    • Felismert szavakat adott hozzá a saját szótárhoz, hogy build.cmd sikeres legyen.
  8. [Bruno Roggeri](https://www.codeplex.com/site/users/view/broggeri)
    • Javítsa az egységteszteket, amikor honosított Visual Studio-ban futtatja őket.
  9. [Gareth Evans](https://www.codeplex.com/site/users/view/garethevans)
    • Kinyert felület a PackageService-ből
  10. [Maxime Brugidou](https://www.codeplex.com/site/users/view/brugidou) (@brugidou)
    • [#936](https://nuget.codeplex.com/workitem/936) – Projektfüggőségek kezelése csomagoláskor
  11. [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) - Támogatja a szöveges jelszó törlését a csomag forrásának hitelesítő adatainak nuget.cofig fájlokban való tárolásakor
  12. [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) - Get-Package súgó leírásának javítása

Megtiszteltetés számunkra, hogy köszönetet mondunk azoknak a személyeknek, akik a NuGet 2.5 béta/RC verziójának hibáit felfedezték, és ezek a hibák a végleges kiadás előtt jóváhagyásra és kijavításra kerültek.

  1. [Tony Wall](https://www.codeplex.com/site/users/view/CodeChief) (@CodeChief)
    • [#3200](https://nuget.codeplex.com/workitem/3200) - MsTest nem működik a legújabb NuGet 2.4 és 2.5 build-ekkel

A kiadás figyelemre méltó funkciói

A felhasználók felülírhatják a már létező tartalomfájlokat

Az egyik legkeresettebb funkció az volt, hogy a lemezen már létező tartalomfájlokat felül lehessen írni, amikor azok egy NuGet-csomagban szerepelnek. A NuGet 2.5-től kezdve ezek az ütközések azonosíthatók, és a rendszer kéri a fájlok felülírását, míg korábban ezek a fájlok mindig kimaradtak.

Tartalomfájlok felülírása

A 'nuget.exe update' és az 'Install-Package' mostantól mind rendelkezik a '-FileConflictAction' új lehetőséggel a parancssori forgatókönyvek számára alapértelmezett beállítás megadásához.

Alapértelmezett művelet beállítása, ha egy csomagból származó fájl már létezik a célprojektben. Állítsa "Felülírás" értékre, hogy mindig felülírja a fájlokat. A fájlok kihagyásához állítsa a "Kihagyás" értéket. Ha nincs megadva, minden ütköző fájlra rákérdez.

MSBuild-célok és -kellékfájlok automatikus importálása

Új hagyományos mappa lett létrehozva a NuGet-csomag legfelső szintjén. Társként \lib\content\toolsmostantól egy mappát is felvehet \build a csomagba. Ebben a mappában két rögzített nevű fájlt helyezhet el. {packageid}.targets{packageid}.props A két fájl közvetlenül vagy a build alatt, vagy a keretrendszer-specifikus mappák alá kerülhet, ugyanúgy, mint a többi mappa. A legjobban megfeleltethető keretrendszermappa kiválasztására vonatkozó szabály pontosan megegyezik azokban leírtakéval.

Amikor a NuGet egy \build fájlokat tartalmazó csomagot telepít, hozzáad egy MSBuild <Import> elemet a projektfájlhoz, amely mutat a .targets és .props fájlokra. A .props fájl felül lesz hozzáadva, míg a .targets fájl alul lesz hozzáadva.

Platformonként eltérő hivatkozások megadása elem használatával <References/>

A 2.5 előtt a fájlban .nuspec a felhasználó csak az összes keretrendszerhez hozzáadandó referenciafájlokat adhatja meg. A 2.5-ös új funkcióval a felhasználó létrehozhatja az <reference/> egyes támogatott platformok elemeit, például:

<references>
    <group targetFramework="net45">
        <reference file="a.dll" />
    </group>
    <group targetFramework="netcore45">
        <reference file="b.dll" />
    </group>
    <group>
        <reference file="c.dll" />
    </group>
</references>

Az alábbi folyamat azt mutatja be, hogy a NuGet hogyan ad hozzá hivatkozásokat a projektekhez a .nuspec fájl alapján:

  1. Keresse meg a lib cél keretrendszernek megfelelő mappát, és kérje le a szerelvények listáját a mappából
  2. Külön keresse meg a célkeretrendszernek megfelelő hivatkozási csoportot, és kérje le az adott csoportból az összeállítások listáját. A célkeret nélküli referenciacsoport a tartalék csoport.
  3. Keresse meg a két lista metszetét, és használja ezt a hivatkozást a hozzáadáshoz

Ez az új funkció lehetővé teszi a csomagkészítők számára, hogy a Hivatkozások funkcióval különböző keretrendszerekre alkalmazzák a szerelvények részhalmazait, ha egyébként több lib mappában kellene duplikált szerelvényeket hordozniuk.

Megjegyzés: jelenleg nuget.exe csomaggal kell használnia ezt a funkciót; A NuGet Package Explorer még nem támogatja.

Az Összes frissítése gomb az összes csomag egyidejű frissítésének engedélyezéséhez

Sokan ismerik az "Update-Package" PowerShell-parancsmagot az összes csomag frissítéséhez; Most már van egy egyszerű módja annak, hogy ezt a felhasználói felületen keresztül is.

A funkció kipróbálásához:

  1. Új ASP.NET MVC-alkalmazás létrehozása
  2. Indítsa el a "NuGet-csomagok kezelése" párbeszédpanelt
  3. Válassza a "Frissítések" lehetőséget
  4. Kattintson az "Összes frissítése" gombra

Az Összes frissítése gomb a párbeszédpanelen

Továbbfejlesztett projektreferenciák támogatása nuget.exe Csomaghoz

Most nuget.exe csomagparancsfolyamatok a következő szabályokkal hivatkoztak a projektekre:

  1. Ha a hivatkozott projekt rendelkezik megfelelő .nuspec fájllal, például egy fájl proj1.nuspec neve ugyanabban a mappában van, mint proj1.csproja fájl, akkor a program függőségként adja hozzá a projektet a csomaghoz a fájlból .nuspec beolvasott azonosító és verzió használatával.
  2. Ellenkező esetben a hivatkozott projekt fájljai a csomagba vannak csomagolva. Ezután a projekt által hivatkozott projektek rekurzív módon lesznek feldolgozva ugyanazokkal a szabályokkal.
  3. A rendszer hozzáadja az összes DLL-t .pdbés .exe fájlt.
  4. A rendszer minden más tartalomfájlt hozzáad.
  5. A rendszer minden függőséget egyesít.

Ez lehetővé teszi, hogy a hivatkozott projektek függőségként legyenek kezelve, ha van .nuspec fájl, különben a csomag részévé válik.

További részletek itt: [http://nuget.codeplex.com/workitem/936](http://nuget.codeplex.com/workitem/936)

"Minimális NuGet-verzió" tulajdonság hozzáadása csomagokhoz

A "minClientVersion" nevű új metaadat-attribútum mostantól a csomag használatához szükséges minimális NuGet-ügyfélverziót jelezheti.

Ez a funkció segít a csomagkészítőnek annak megadásában, hogy egy csomag csak a NuGet egy adott verziója után fog működni. Mivel a NuGet 2.5 után új .nuspec funkciók jelennek meg, a csomagok minimális NuGet-verziót igényelhetnek.

<metadata minClientVersion="2.6">

Ha a felhasználó telepítette a NuGet 2.5-öt, és egy csomag 2.6-os igényeként van azonosítva, a rendszer vizuális jelzéseket ad a felhasználónak, jelezve, hogy a csomag nem telepíthető. A felhasználó ezután a NuGet verziójának frissítéséhez lesz irányítva.

Ez javít az eddigi élményen, ahol a csomagok elkezdenek települni, de aztán sikertelenek lesznek, jelezve, hogy ismeretlen sémaverzió lett azonosítva.

A függőségek már nem frissülnek szükségtelenül a csomag telepítése során

A NuGet 2.5 előtt, amikor a projektben már telepített csomagtól függő csomagot telepítettek, a függőség az új telepítés részeként frissül, még akkor is, ha a meglévő verzió megfelel a függőségnek.

A NuGet 2.5-től kezdődően, ha egy függőségi verzió már teljesül, a függőség nem frissül a többi csomagtelepítés során.

A forgatókönyv:

  1. A forrásadattár az 1.0.0-s és 1.0.2-es verziójú B csomagot tartalmazza. Az A csomagot is tartalmazza, amely B-re függ (>= 1.0.0).
  2. Tegyük fel, hogy az aktuális projektben már telepítve van a B csomag 1.0.0-s verziója. Most telepíteni szeretné az A csomagot.

A NuGet 2.2-ben és régebbi verzióiban:

  • Az A csomag telepítésekor a NuGet automatikusan frissíti a B-t az 1.0.2-es verzióra, annak ellenére, hogy a meglévő 1.0.0-s verzió már megfelel a függőségi verzió korlátozásának, ami >= 1.0.0.

A NuGet 2.5-ös és újabb verzióban:

  • A NuGet a továbbiakban nem frissíti a B-t, mert azt észleli, hogy a meglévő 1.0.0-s verzió megfelel a függőségi verzió korlátozásának.

További információ a változás hátteréről a részletes [work item](https://nuget.codeplex.com/workitem/1681) elolvasásával, valamint a kapcsolódó [discussion thread](https://nuget.codeplex.com/discussions/436712) segítségével érhető el.

nuget.exe http-kéréseket ad ki részletes részletességgel

Ha hibát keres a nuget.exe-ben, vagy csak kíváncsi arra, hogy milyen HTTP-kérések történnek a műveletek során, a '-verbosity detailed' kapcsoló mostantól az összes HTTP-kérést megjeleníti.

HTTP-kimenet a nuget.exe-ből

nuget.exe push mostantól támogatja az UNC és mappa típusú forrásokat

A NuGet 2.5 előtt, ha egy UNC-útvonalon vagy helyi mappán alapuló csomagforrásra próbálta futtatni a "nuget.exe leküldés" parancsot, a leküldés sikertelen lesz. A nemrég hozzáadott hierarchikus konfigurációs funkcióval általánossá vált, hogy nuget.exe unc/folder forrást vagy HTTP-alapú NuGet-gyűjteményt kell céloznia.

A NuGet 2.5-től kezdve, ha nuget.exe azonosít egy UNC/mappaforrást, akkor a fájl másolása a forrásba történik.

A következő parancs mostantól működik:

nuget push -source \\mycompany\repo\ mypackage.1.0.0.nupkg

nuget.exe explicit módon megadott konfigurációs fájlokat támogat

nuget.exe konfigurációhoz hozzáférő parancsok (a "spec" és a "pack" kivételével) mostantól támogatnak egy új "-ConfigFile" beállítást, amely egy adott konfigurációs fájlt kényszerít ki az alapértelmezett konfigurációs fájl helyett a %AppData%\nuget\Nuget.Config webhelyen.

Példa:

nuget sources add -name test -source http://test -ConfigFile C:\test\.nuget\Nuget.Config

Natív projektek támogatása

A NuGet 2.5-ben a NuGet-eszközkészlet natív projektekhez érhető el a Visual Studióban. A legtöbb natív csomag a fenti MSBuild import funkciót fogja használni a CoApp-projekt által létrehozott eszköz használatával. További információkért olvassa el az eszköz részleteit a coapp.org webhelyén.

A "native" célkeretrendszer neve bevezetésre került, hogy a csomagok fájlokat tartalmazhassanak a \build, \content és \tools mappákban, amikor a csomagot egy natív projektbe telepítik. A "lib" mappa nem használható natív projektekhez.