Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A forráskód-átalakítás egyirányú tokencserét alkalmaz a csomag content vagy contentFiles mappájában lévő fájlokra (content az packages.config-t használó ügyfeleknek és contentFiles-t használó ügyfeleknek PackageReference), ahol a tokenek a Visual Studio projekt tulajdonságaira vonatkoznak. Ez lehetővé teszi egy fájl beszúrását a projekt névterébe, vagy testre szabhatja azokat a kódot, amelyek általában egy ASP.NET projektbe global.asax kerülnek.
A konfigurációs fájlátalakítással módosíthatja a célprojektben már létező fájlokat, például web.config és app.config. Előfordulhat például, hogy a csomagnak hozzá kell adnia egy elemet a modules konfigurációs fájl szakaszához. Ez az átalakítás a konfigurációs fájlokhoz hozzáadni kívánt szakaszokat leíró speciális fájlokkal történik a csomagban. A csomagok eltávolítása után ugyanezek a módosítások vissza lesznek fordítva, így ez egy kétirányú átalakítás lesz.
Forráskódátalakítások megadása
A csomagból a projektbe beszúrni kívánt fájloknak a csomagban
contentéscontentFilesa mappákban kell lenniük. Ha például azt szeretné, hogy egy fájlContosoData.csa célprojekt egyikModelsmappájába legyen telepítve, annak a csomagban, acontent\ModelséscontentFiles\{lang}\{tfm}\Modelsmappákban kell lennie.Ha arra szeretné utasítani a NuGetet, hogy a telepítéskor alkalmazza a tokencserét, fűzze hozzá
.ppa forráskódfájl nevét. A telepítés után a fájl nem rendelkezik a.ppkiterjesztéssel.Ha például átalakításokat
ContosoData.csszeretne végezni, nevezze el a fájlt a csomagbanContosoData.cs.pp. A telepítés után a következőként jelenik meg:ContosoData.cs.A forráskódfájlban az
$token$kis- és nagybetűket nem megkülönböztető tokenek használatával jelezze, mely értékeket kell a NuGet-nek projekttulajdonságokkal helyettesítenie.namespace $rootnamespace$.Models { public struct CategoryInfo { public string categoryid; public string description; public string htmlUrl; public string rssUrl; public string title; } }Telepítéskor a NuGet a
$rootnamespace$-tFabrikam-re cseréli, feltéve, hogy a célprojekt gyökérnévtereFabrikam.
A $rootnamespace$ token a leggyakrabban használt projekttulajdonság; a többi a projekttulajdonságok között található. Természetesen vegye figyelembe, hogy egyes tulajdonságok a projekt típusára lehetnek jellemzőek.
Konfigurációs fájlátalakítások megadása
A következő szakaszokban leírtak szerint a konfigurációs fájlátalakítások kétféleképpen végezhetők el:
- Vegye fel a
app.config.transformésweb.config.transformfájlokat a csomagcontentmappájába, ahol a.transformkiterjesztés tájékoztatja a NuGet-et, hogy ezek a fájlok tartalmazzák az XML-t, melyet a meglévő konfigurációs fájlokkal kell egyesíteni a csomag telepítésekor. Egy csomag eltávolításakor ugyanez az XML el lesz távolítva. - A csomag
contentmappájába vegye fel aapp.config.install.xdtésweb.config.install.xdtfájlokat, és a kívánt módosítások leírásához használjon XDT szintaxist. Ezzel a beállítással olyan.uninstall.xdtfájlt is megadhat, amely megfordítja a módosításokat, amikor a csomagot eltávolítják egy projektből.
Megjegyzés:
Az átalakítások nem vonatkoznak a .config Visual Studióban hivatkozásként hivatkozott fájlokra.
Az XDT használatának előnye, hogy ahelyett, hogy egyszerűen egyesít két statikus fájlt, szintaxist biztosít az XML DOM szerkezetének a teljes XPath-támogatással való elem- és attribútumegyeztetés használatával történő manipulálására. Az XDT ezután hozzáadhat, frissíthet vagy eltávolíthat elemeket, új elemeket helyezhet el egy adott helyen, vagy lecserélheti/eltávolíthatja az elemeket (beleértve a gyermekcsomópontokat is). Ez megkönnyíti az eltávolítási átalakítások létrehozását, amelyek a csomag telepítése során végrehajtott összes átalakítást visszavetik.
XML-átalakítások
A csomag content mappájában található app.config.transform és web.config.transform csak azokat az elemeket tartalmazza, amelyek egyesíthetők a projekt meglévő app.config és web.config fájljaival.
Tegyük fel például, hogy a projekt kezdetben a következő tartalmat tartalmazza:web.config
<configuration>
<system.webServer>
<modules>
<add name="ContosoUtilities" type="Contoso.Utilities" />
</modules>
</system.webServer>
</configuration>
Ha a csomag telepítése során hozzá szeretne adni egy MyNuModule elemet a modules szakaszhoz, hozzon létre egy web.config.transform fájlt a csomag mappájában content , amely így néz ki:
<configuration>
<system.webServer>
<modules>
<add name="MyNuModule" type="Sample.MyNuModule" />
</modules>
</system.webServer>
</configuration>
Miután a NuGet telepítette a csomagot, web.config a következőképpen fog megjelenni:
<configuration>
<system.webServer>
<modules>
<add name="ContosoUtilities" type="Contoso.Utilities" />
<add name="MyNuModule" type="Sample.MyNuModule" />
</modules>
</system.webServer>
</configuration>
Figyelje meg, hogy a NuGet nem cserélte le a modules szakaszt, csak új elemek és attribútumok hozzáadásával egyesítette az új bejegyzést. A NuGet nem módosítja a meglévő elemeket és attribútumokat.
A csomag eltávolítása után a NuGet újra megvizsgálja a .transform fájlokat, és eltávolítja a benne található elemeket a megfelelő .config fájlokból. Vegye figyelembe, hogy ez a folyamat nem befolyásolja a fájl azon sorait, amelyeket a .config csomag telepítése után módosít.
Részletesebb példaként az ASP.NET (ELMAH) csomag hibanaplózó moduljai és kezelői számos bejegyzést web.configadnak hozzá, amelyek egy csomag eltávolításakor újra törlődnek.
A fájl vizsgálatához web.config.transform töltse le az ELMAH-csomagot a fenti hivatkozásból, változtassa meg a csomagbővítményt .nupkg-ről .zip-re, majd nyissa meg a content\web.config.transform fájlt abban a ZIP-fájlban.
A csomag telepítésének és eltávolításának hatásának megtekintéséhez hozzon létre egy új ASP.NET projektet a Visual Studióban (a sablon a Visual C# > Web alatt található az Új projekt párbeszédpanelen), és válasszon egy üres ASP.NET alkalmazást. Nyissa meg web.config a kezdeti állapot megtekintéséhez. Ezután kattintson a jobb gombbal a projektre, válassza a NuGet-csomagok kezelése lehetőséget, keresse meg az ELMAH-t a nuget.org, és telepítse a legújabb verziót. Figyelje meg a módosításokat.web.config Most távolítsa el a csomagot, és látni fogja, hogy web.config visszaáll a korábbi állapotára.
XDT-átalakítások
Megjegyzés:
Ahogy az a dokumentáció csomagkompatibilitási problémáinak szakaszában is szerepel, az packages.configPackageReferenceXDT-átalakításokat az alábbiakban leírtak szerint csak a packages.configprogram támogatja. Ha hozzáadja az alábbi fájlokat a csomaghoz, a
A konfigurációs fájlokat XDT-szintaxissal módosíthatja. Azt is megteheti, hogy a NuGet-helyőrzőket projekttulajdonságokra cseréli, ha a tulajdonság nevét a $ határolók közé foglalja (kis- és nagybetűket nem érzékenyítő).
A következő app.config.install.xdt fájl például beszúr egy appSettings elemet a app.config elembe, amely tartalmazza a projektből származó FullPath, FileName, és ActiveConfigurationSettings értékeket.
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<appSettings xdt:Transform="Insert">
<add key="FullPath" value="$FullPath$" />
<add key="FileName" value="$filename$" />
<add key="ActiveConfigurationSettings " value="$ActiveConfigurationSettings$" />
</appSettings>
</configuration>
Tegyük fel például, hogy a projekt kezdetben a következő tartalmat tartalmazza:web.config
<configuration>
<system.webServer>
<modules>
<add name="ContosoUtilities" type="Contoso.Utilities" />
</modules>
</system.webServer>
</configuration>
Az modules szekcióhoz egy MyNuModule elemet szeretne hozzáadni a csomag telepítése során, a csomag web.config.install.xdt a következőket tartalmazza:
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<system.webServer>
<modules>
<add name="MyNuModule" type="Sample.MyNuModule" xdt:Transform="Insert" />
</modules>
</system.webServer>
</configuration>
A csomag web.config telepítése után a következőképpen fog kinézni:
<configuration>
<system.webServer>
<modules>
<add name="ContosoUtilities" type="Contoso.Utilities" />
<add name="MyNuModule" type="Sample.MyNuModule" />
</modules>
</system.webServer>
</configuration>
Ha csak az elemet szeretné eltávolítani a MyNuModule csomag eltávolítása során, a fájlnak a web.config.uninstall.xdt következőket kell tartalmaznia:
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<system.webServer>
<modules>
<add name="MyNuModule" xdt:Transform="Remove" xdt:Locator="Match(name)" />
</modules>
</system.webServer>
</configuration>