Megosztás a következőn keresztül:


Újrafelhasználható felhasználói felület létrehozása a Razor osztálykódtár-projekttel a ASP.NET Core-ban

Készítette: Rick Anderson

Razor nézetek, oldalak, vezérlők, oldalmodellek, Razor összetevők, nézetösszetevőkés adatmodellek egy Razor osztálykönyvtárba (RCL) építhetők be. Az RCL csomagolható és újra felhasználható. Az alkalmazások tartalmazhatják az RCL-t, és felülbírálhatják a benne található nézeteket és lapokat. Ha egy nézet, részleges nézet vagy Razor lap a webalkalmazásban és az RCL-ben is megtalálható, a webalkalmazásban a Razor korrektúra (.cshtml fájl) elsőbbséget élvez.

Az RCL esetében az npm és a webpack buildfolyamatba való integrálásáról bővebb információkat a "Kliensoldali webes eszközök összeállítása az osztálykönyvtáradhoz" című témakörben talál.

Razor felhasználói felületet tartalmazó osztálytár létrehozása

  • A Visual Studióból válassza az Új projekt létrehozása lehetőséget .
  • Válassza a Razor Osztálykönyvtár>Következő lehetőséget.
  • Nevezze el a kódtárat (például "RazorClassLib"), >Létrehozás. A fájlnév és a létrehozott nézetkönyvtár ütközésének elkerülése érdekében győződjön meg arról, hogy a könyvtár neve nem végződik .Views-ra.
  • Válassza a támogatási lapokat és nézeteket, amennyiben szüksége van olyan könyvtárra, amely lapokat és/vagy nézeteket tartalmaz. Alapértelmezés szerint csak Razor összetevők támogatottak. Válassza ki a elemet, és hozza létre.

A Razor osztálykönyvtár sablon alapértelmezés szerint a Razor összetevő-fejlesztéshez használatos. A Támogatási lapok és nézetek beállítás támogatja a lapokat és a nézeteket. A BlazorRCL-támogatásával kapcsolatos további információkért lásd: ASP.NET Core Razor összetevőinek felhasználása Razor osztálykódtárból (RCL).

Adjon hozzá Razor fájlokat az RCL-hez.

A ASP.NET Core-sablonok feltételezik, hogy az RCL-tartalom a Areas mappában található. Az alábbi RCL-oldalak elrendezésénél hozzunk létre egy RCL-t, amely a tartalmat ~/Pages teszi elérhetővé, nem pedig ~/Areas/Pages.

RCL-referencia tartalom

Az RCL-re a következő hivatkozással hivatkozhat:

Nézetek, részleges nézetek és lapok felülírása

Ha egy nézet, részleges nézet vagy Razor lap a webalkalmazásban és az RCL-ben is megtalálható, a webalkalmazásban a Razor korrektúra (.cshtml fájl) elsőbbséget élvez. Például adja hozzá a WebApp1/Areas/MyFeature/Pages/Page1.cshtml-t a WebApp1-hez, és a WebApp1-en található Lap1 elsőbbséget élvez majd az RCL-en található Lap1 felett.

A mintafájlban nevezze át WebApp1/Areas/MyFeature2-t WebApp1/Areas/MyFeature-re, hogy tesztelje az elsőbbséget.

Másolja a RazorUIClassLib/Areas/MyFeature/Pages/Shared/_Message.cshtml részleges nézetet a WebApp1/Areas/MyFeature/Pages/Shared/_Message.cshtml-be. Frissítse a jelölést az új hely jelzésére. Hozza létre és futtassa az alkalmazást annak ellenőrzéséhez, hogy a részleges alkalmazás verziója használatban van-e.

Ha az RCL Razor oldalakat használ, engedélyezze a Razor Pages-szolgáltatásokat és -végpontokat az üzemeltetési alkalmazásban:

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddControllersWithViews();
builder.Services.AddRazorPages();

var app = builder.Build();

if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Home/Error");
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();

app.UseRouting();

app.UseAuthorization();

app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

app.MapRazorPages();
app.Run();

RCL-lapok elrendezése

Ha úgy szeretne hivatkozni az RCL-tartalomra, mintha az a webalkalmazás Pages mappájának része lenne, hozza létre az RCL-projektet a következő fájlstruktúrával:

  • RazorUIClassLib/Pages
  • RazorUIClassLib/Pages/Shared

Tegyük fel, hogy RazorUIClassLib/Pages/Shared két részleges fájlt tartalmaz: _Header.cshtml és _Footer.cshtml. A <partial> címkék hozzáadhatók _Layout.cshtml fájlhoz:

<body>
  <partial name="_Header">
  @RenderBody()
  <partial name="_Footer">
</body>

Add hozzá a _ViewStart.cshtml fájlt az RCL-projekt Pages mappájába a gazdagép webalkalmazásának _Layout.cshtml fájljának használatához.

@{
    Layout = "_Layout";
}

RCL létrehozása statikus eszközökkel

Az RCL-hez szükség lehet olyan társ statikus eszközökre, amelyekre az RCL vagy az RCL fogyasztó alkalmazása hivatkozhat. ASP.NET Core lehetővé teszi olyan RCLs-ek létrehozását, amelyek statikus objektumokat tartalmaznak, amelyek elérhetők a fogyasztó alkalmazások számára.

Ha társeszközöket szeretne belefoglalni egy RCL-fájlba, hozzon létre egy wwwroot mappát az osztálytárban, és foglalja bele a szükséges fájlokat ebbe a mappába.

RCL csomagolásakor a wwwroot mappában lévő összes társeszköz automatikusan bekerül a csomagba.

Használja a dotnet pack parancsot a NuGet.exe verzió nuget packhelyett.

Ügyfél webes eszközeinek hozzáadása a buildelési folyamathoz

Az ügyfél webes eszközeinek a buildelési folyamatba való integrálása nemtriviális. További információt Az Razor Osztálytár ügyfél-webes eszközeinek létrehozása című témakörben talál.

Statikus eszközök kizárása

Statikus objektumok kizárásához adja hozzá a kívánt kizárási útvonalat a projektfájl $(DefaultItemExcludes) tulajdonságcsoporthoz. Pontosvesszővel (;) rendelkező bejegyzések elkülönítése.

Az alábbi példában a lib.css mappában lévő wwwroot stíluslap nem tekinthető statikus objektumnak, és nem szerepel a közzétett RCL-ben:

<PropertyGroup>
  <DefaultItemExcludes>$(DefaultItemExcludes);wwwroot\lib.css</DefaultItemExcludes>
</PropertyGroup>

Typescript-integráció

TypeScript-fájlok felvétele RCL-fájlba:

  • A projektben hivatkozzon a Microsoft.TypeScript.MSBuild NuGet-csomagra.

    Jegyzet

    A csomagok .NET-alkalmazásokhoz való hozzáadásáról a Csomagok telepítése és kezeléseCsomaghasználati munkafolyamat (NuGet-dokumentáció)című cikkben talál útmutatást. Ellenőrizze a megfelelő csomagverziókat a NuGet.org.

  • Helyezze a TypeScript-fájlokat (.ts) a wwwroot mappán kívülre. Helyezze például a fájlokat egy Client mappába.

  • Adja hozzá a következő korrektúrát a projektfájlhoz:

    • Konfigurálja az wwwroot mappa TypeScript buildkimenetét a TypescriptOutDir tulajdonsággal.
    • Adja hozzá a TypeScript-célt a PrepareForBuildDependsOn-cél függőségeként.
    • Távolítsa el a kimenetet a wwwroot folderszekcióból.
<Project Sdk="Microsoft.NET.Sdk.Razor">

  <PropertyGroup>
    // Markup removed for brevity.
    <TypescriptOutDir>wwwroot</TypescriptOutDir>
    <PrepareForBuildDependsOn>
      CompileTypeScriptWithTSConfig;
      GetTypeScriptOutputForPublishing;$(PrepareForBuildDependsOn)
    </PrepareForBuildDependsOn>
  </PropertyGroup>

  <ItemGroup>
    <Content Remove="wwwroot\{path-to-typescript-outputs}" />
  </ItemGroup>

</Project>

Hivatkozott RCL-ből származó tartalom felhasználása

Az RCL wwwroot mappájában található fájlok az RCL vagy a fogyasztó alkalmazás számára érhetők el az _content/{PACKAGE ID}/előtag alatt. Egy Razor.Class.Lib összállítási névvel rendelkező kódtár, amelynek a projektfájljában nincs megadva <PackageId>, például a statikus tartalom elérési útját eredményezi a _content/Razor.Class.Lib/. NuGet-csomag létrehozásakor, ha az assemblage neve nem azonos a csomagazonosítóval (<PackageId> a kódtár projektfájljában), használja a projektfájlban megadott csomagazonosítót a {PACKAGE ID}helyen.

A fogyasztó alkalmazás a kódtár által biztosított statikus eszközökre hivatkozik <script>, <style>, <img>és egyéb HTML-címkékkel. A fogyasztó alkalmazásnak engedélyeznie kell a statikus fájlok támogatását a következő helyen:

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddControllersWithViews();
builder.Services.AddRazorPages();

var app = builder.Build();

if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Home/Error");
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();

app.UseRouting();

app.UseAuthorization();

app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

app.MapRazorPages();
app.Run();

Ha a felhasználó alkalmazást buildkimenetből (dotnet run) futtatja, a statikus webeszközök alapértelmezés szerint engedélyezve vannak a fejlesztési környezetben. Ha más környezetekben lévő eszközöket szeretne támogatni a buildkimenetből futtatáskor, hívja meg a UseStaticWebAssets a hosztépítőben a Program.cs.

var builder = WebApplication.CreateBuilder(args);

builder.WebHost.UseWebRoot("wwwroot");
builder.WebHost.UseStaticWebAssets();

builder.Services.AddRazorPages();

var app = builder.Build();

if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Error");
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();

app.UseRouting();

app.UseAuthorization();

app.MapRazorPages();

app.Run();

Nem szükséges meghívni UseStaticWebAssets, ha közzétett kimenetből (dotnet publish) futtat egy alkalmazást.

Többprojektes fejlesztési folyamat

A fogyasztóalkalmazás futtatásakor:

  • Az RCL-ben lévő objektumok az eredeti mappájukban maradnak. A vagyontárgyak nem kerülnek át a fogyasztói alkalmazásba.
  • Az RCL wwwroot mappájában végrehajtott módosítások az RCL újraépítése után, a fogyasztó alkalmazás újraépítése nélkül is megjelennek a fogyasztó alkalmazásban.

Az RCL létrehozásakor a rendszer létrehoz egy jegyzékfájlt, amely leírja a statikus webes eszközhelyeket. A fogyasztó alkalmazás futásidőben felolvassa a jegyzékfájlt, hogy felhasználja a hivatkozott projektekből és csomagokból származó eszközöket. Amikor új objektumot ad hozzá egy RCL-hez, az RCL-t újra kell létrehozni, hogy frissítse a jegyzékfájlt, mielőtt egy fogyasztó alkalmazás hozzáférhet az új objektumhoz.

Közzétesz

Az alkalmazás közzétételekor a program az összes hivatkozott projekt és csomag társeszközeit a közzétett alkalmazás wwwroot mappájába másolja a _content/{PACKAGE ID}/alatt. NuGet-csomag készítésekor, ha a szerelvény neve nem egyezik meg a csomagazonosítóval (<PackageId> a kódtár projektfájljában), használja a projektfájlban megadott csomagazonosítót a közzétett elemek {PACKAGE ID} mappájának vizsgálatakor a wwwroot miatt.

További erőforrások

Razor nézetek, oldalak, vezérlők, oldalmodellek, Razor összetevők, nézetösszetevőkés adatmodellek egy Razor osztálykönyvtárba (RCL) építhetők be. Az RCL csomagolható és újra felhasználható. Az alkalmazások tartalmazhatják az RCL-t, és felülbírálhatják a benne található nézeteket és lapokat. Ha egy nézet, részleges nézet vagy Razor lap a webalkalmazásban és az RCL-ben is megtalálható, a webalkalmazásban a Razor korrektúra (.cshtml fájl) elsőbbséget élvez.

Az npm és a webpack építési folyamatba történő integrálásáról az Razor osztálykönyvtár esetén további információt az Ügyféloldali webes eszközök létrehozása az Razor osztálykönyvtárhozcímű témakörben talál.

Razor felhasználói felületet tartalmazó osztálytár létrehozása

  • A Visual Studióból válassza az Új projekt létrehozása lehetőséget .
  • Válassza a Razor Osztálykönyvtár>Következő lehetőséget.
  • Nevezze el a kódtárat (például "RazorClassLib"), >Létrehozás. A fájlnév és a létrehozott nézetkönyvtár ütközésének elkerülése érdekében győződjön meg arról, hogy a könyvtár neve nem végződik .Views-ra.
  • Ha a nézetek támogatására van szükség, válassza a támogatási oldalakat és nézeteket. Alapértelmezés szerint csak Razor lapok támogatottak. Válassza ki a elemet, és hozza létre.

Az Razor osztálykönyvtár (RCL) sablon alapértelmezés szerint a Razor komponensfejlesztéshez van beállítva. A Támogatási lapok és nézetek beállítás támogatja a lapokat és a nézeteket.

Adjon hozzá Razor fájlokat az RCL-hez.

A ASP.NET Core-sablonok feltételezik, hogy az RCL-tartalom a Areas mappában található. Az alábbi RCL-oldalak elrendezésénél hozzunk létre egy RCL-t, amely a tartalmat ~/Pages teszi elérhetővé, nem pedig ~/Areas/Pages.

RCL-referencia tartalom

Az RCL-re a következő hivatkozással hivatkozhat:

Nézetek, részleges nézetek és lapok felülírása

Ha egy nézet, részleges nézet vagy Razor lap a webalkalmazásban és az RCL-ben is megtalálható, a webalkalmazásban a Razor korrektúra (.cshtml fájl) elsőbbséget élvez. Például adja hozzá a WebApp1/Areas/MyFeature/Pages/Page1.cshtml-t a WebApp1-hez, és a WebApp1-en található Lap1 elsőbbséget élvez majd az RCL-en található Lap1 felett.

A mintafájlban nevezze át WebApp1/Areas/MyFeature2-t WebApp1/Areas/MyFeature-re, hogy tesztelje az elsőbbséget.

Másolja a RazorUIClassLib/Areas/MyFeature/Pages/Shared/_Message.cshtml részleges nézetet a WebApp1/Areas/MyFeature/Pages/Shared/_Message.cshtml-be. Frissítse a jelölést az új hely jelzésére. Hozza létre és futtassa az alkalmazást annak ellenőrzéséhez, hogy a részleges alkalmazás verziója használatban van-e.

Ha az RCL Razor oldalakat használ, engedélyezze a Razor Pages-szolgáltatásokat és -végpontokat az üzemeltetési alkalmazásban:

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddControllersWithViews();
builder.Services.AddRazorPages();

var app = builder.Build();

if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Home/Error");
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();

app.UseRouting();

app.UseAuthorization();

app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

app.MapRazorPages();
app.Run();

RCL-lapok elrendezése

Ha úgy szeretne hivatkozni az RCL-tartalomra, mintha az a webalkalmazás Pages mappájának része lenne, hozza létre az RCL-projektet a következő fájlstruktúrával:

  • RazorUIClassLib/Pages
  • RazorUIClassLib/Pages/Shared

Tegyük fel, hogy RazorUIClassLib/Pages/Shared két részleges fájlt tartalmaz: _Header.cshtml és _Footer.cshtml. A <partial> címkék hozzáadhatók _Layout.cshtml fájlhoz:

<body>
  <partial name="_Header">
  @RenderBody()
  <partial name="_Footer">
</body>

Add hozzá a _ViewStart.cshtml fájlt az RCL-projekt Pages mappájába a gazdagép webalkalmazásának _Layout.cshtml fájljának használatához.

@{
    Layout = "_Layout";
}

RCL létrehozása statikus eszközökkel

Az RCL-hez szükség lehet olyan társ statikus eszközökre, amelyekre az RCL vagy az RCL fogyasztó alkalmazása hivatkozhat. ASP.NET Core lehetővé teszi olyan RCLs-ek létrehozását, amelyek statikus objektumokat tartalmaznak, amelyek elérhetők a fogyasztó alkalmazások számára.

Ha társeszközöket szeretne belefoglalni egy RCL-fájlba, hozzon létre egy wwwroot mappát az osztálytárban, és foglalja bele a szükséges fájlokat ebbe a mappába.

RCL csomagolásakor a wwwroot mappában lévő összes társeszköz automatikusan bekerül a csomagba.

Használja a dotnet pack parancsot a NuGet.exe verzió nuget packhelyett.

Statikus eszközök kizárása

Statikus objektumok kizárásához adja hozzá a kívánt kizárási útvonalat a projektfájl $(DefaultItemExcludes) tulajdonságcsoporthoz. Pontosvesszővel (;) rendelkező bejegyzések elkülönítése.

Az alábbi példában a lib.css mappában lévő wwwroot stíluslap nem tekinthető statikus objektumnak, és nem szerepel a közzétett RCL-ben:

<PropertyGroup>
  <DefaultItemExcludes>$(DefaultItemExcludes);wwwroot\lib.css</DefaultItemExcludes>
</PropertyGroup>

Typescript-integráció

TypeScript-fájlok felvétele RCL-fájlba:

  1. A projektben hivatkozzon a Microsoft.TypeScript.MSBuild NuGet-csomagra.

    Jegyzet

    A csomagok .NET-alkalmazásokhoz való hozzáadásáról a Csomagok telepítése és kezeléseCsomaghasználati munkafolyamat (NuGet-dokumentáció)című cikkben talál útmutatást. Ellenőrizze a megfelelő csomagverziókat a NuGet.org.

  2. Helyezze a TypeScript-fájlokat (.ts) a wwwroot mappán kívülre. Helyezze például a fájlokat egy Client mappába.

  3. Konfigurálja a TypeScript build kimenetét a wwwroot mappához. Állítsa be a TypescriptOutDir tulajdonságot egy PropertyGroup-ben a projektfájlban:

    <TypescriptOutDir>wwwroot</TypescriptOutDir>
    
  4. Adja hozzá a TypeScript célpontot a PrepareForBuildDependsOn-cél függőségeként a projektfájlban lévő PropertyGroup célon belül a következő cél hozzáadásával:

    <PrepareForBuildDependsOn>
      CompileTypeScript;
      GetTypeScriptOutputForPublishing;$(PrepareForBuildDependsOn)
    </PrepareForBuildDependsOn>
    

Hivatkozott RCL-ből származó tartalom felhasználása

Az RCL wwwroot mappájában található fájlok az RCL vagy a fogyasztó alkalmazás számára érhetők el az _content/{PACKAGE ID}/előtag alatt. Egy Razor.Class.Lib összállítási névvel rendelkező kódtár, amelynek a projektfájljában nincs megadva <PackageId>, például a statikus tartalom elérési útját eredményezi a _content/Razor.Class.Lib/. NuGet-csomag létrehozásakor, ha az assemblage neve nem azonos a csomagazonosítóval (<PackageId> a kódtár projektfájljában), használja a projektfájlban megadott csomagazonosítót a {PACKAGE ID}helyen.

A fogyasztó alkalmazás a kódtár által biztosított statikus eszközökre hivatkozik <script>, <style>, <img>és egyéb HTML-címkékkel. A fogyasztó alkalmazásnak engedélyeznie kell a statikus fájlok támogatását a következő helyen:

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddControllersWithViews();
builder.Services.AddRazorPages();

var app = builder.Build();

if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Home/Error");
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();

app.UseRouting();

app.UseAuthorization();

app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

app.MapRazorPages();
app.Run();

Ha a felhasználó alkalmazást buildkimenetből (dotnet run) futtatja, a statikus webeszközök alapértelmezés szerint engedélyezve vannak a fejlesztési környezetben. Ha más környezetekben lévő erőforrásokat szeretne támogatni a buildkimenetből való futtatáskor, hívja meg a UseStaticWebAssets a hosztkészítőn a Program.cs.

var builder = WebApplication.CreateBuilder(args);

builder.WebHost.UseWebRoot("wwwroot").UseStaticWebAssets();

builder.Services.AddRazorPages();

var app = builder.Build();

if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Error");
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();

app.UseRouting();

app.UseAuthorization();

app.MapRazorPages();

app.Run();

Megjegyzés: .NET 6 csak builder.WebHost.UseWebRoot("wwwroot").UseStaticWebAssetshívását igényli. További információ: a GitHub-probléma.

Nem szükséges meghívni UseStaticWebAssets, ha közzétett kimenetből (dotnet publish) futtat egy alkalmazást.

Többprojektes fejlesztési folyamat

A fogyasztóalkalmazás futtatásakor:

  • Az RCL-ben lévő objektumok az eredeti mappájukban maradnak. A vagyontárgyak nem kerülnek át a fogyasztói alkalmazásba.
  • Az RCL wwwroot mappájában végrehajtott módosítások az RCL újraépítése után, a fogyasztó alkalmazás újraépítése nélkül is megjelennek a fogyasztó alkalmazásban.

Az RCL létrehozásakor a rendszer létrehoz egy jegyzékfájlt, amely leírja a statikus webes eszközhelyeket. A fogyasztó alkalmazás futásidőben felolvassa a jegyzékfájlt, hogy felhasználja a hivatkozott projektekből és csomagokból származó eszközöket. Amikor új objektumot ad hozzá egy RCL-hez, az RCL-t újra kell létrehozni, hogy frissítse a jegyzékfájlt, mielőtt egy fogyasztó alkalmazás hozzáférhet az új objektumhoz.

Közzétesz

Az alkalmazás közzétételekor a program az összes hivatkozott projekt és csomag társeszközeit a közzétett alkalmazás wwwroot mappájába másolja a _content/{PACKAGE ID}/alatt. NuGet-csomag készítésekor, ha a szerelvény neve nem egyezik meg a csomagazonosítóval (<PackageId> a kódtár projektfájljában), használja a projektfájlban megadott csomagazonosítót a közzétett elemek {PACKAGE ID} mappájának vizsgálatakor a wwwroot miatt.

További erőforrások

Razor nézetek, oldalak, vezérlők, oldalmodellek, Razor összetevők, nézetösszetevőkés adatmodellek egy Razor osztálykönyvtárba (RCL) építhetők be. Az RCL csomagolható és újra felhasználható. Az alkalmazások tartalmazhatják az RCL-t, és felülbírálhatják a benne található nézeteket és lapokat. Ha egy nézet, részleges nézet vagy Razor lap a webalkalmazásban és az RCL-ben is megtalálható, a webalkalmazásban a Razor korrektúra (.cshtml fájl) elsőbbséget élvez.

Mintakód megtekintése vagy letöltése (hogyan lehet letölteni)

Razor felhasználói felületet tartalmazó osztálytár létrehozása

  • A Visual Studióban válassza Új projekt létrehozásalehetőséget.
  • Válassza a Razor Osztálykönyvtár>Következő lehetőséget.
  • Nevezze el a kódtárat (például "RazorClassLib"), >Létrehozás>Tovább. A fájlnév és a létrehozott nézetkönyvtár ütközésének elkerülése érdekében győződjön meg arról, hogy a könyvtár neve nem végződik .Views-ra.
  • Válassza ki a Célkeretrendszert. Ellenőrizze ☑ a támogatási lapokat és a nézeteket a nézetek támogatásához. Alapértelmezés szerint csak Razor összetevők támogatottak. Válassza ki a elemet, és hozza létre.

Az Razor osztálykönyvtár (RCL) sablon alapértelmezésként a Razor összetevők fejlesztésére szolgál. A Támogatási lapok és nézetek beállítás támogatja a lapokat és a nézeteket.

Adjon hozzá Razor fájlokat az RCL-hez.

A ASP.NET Core-sablonok feltételezik, hogy az RCL-tartalom a Areas mappában található. Tekintse meg a RCL-lapok elrendezését, hogy létrehozhasson egy RCL-t, amely a tartalmat a ~/Pageshelyett a ~/Areas/Pages-ben jeleníti meg.

RCL-referencia tartalom

Az RCL-re a következő hivatkozással hivatkozhat:

Nézetek, részleges nézetek és lapok felülírása

Ha egy nézet, részleges nézet vagy Razor lap a webalkalmazásban és az RCL-ben is megtalálható, a webalkalmazásban a Razor korrektúra (.cshtml fájl) elsőbbséget élvez. Például adja hozzá a WebApp1/Areas/MyFeature/Pages/Page1.cshtml-t a WebApp1-hez, és a WebApp1-en található Lap1 elsőbbséget élvez majd az RCL-en található Lap1 felett.

A mintafájlban nevezze át WebApp1/Areas/MyFeature2-t WebApp1/Areas/MyFeature-re, hogy tesztelje az elsőbbséget.

Másolja a RazorUIClassLib/Areas/MyFeature/Pages/Shared/_Message.cshtml részleges nézetet a WebApp1/Areas/MyFeature/Pages/Shared/_Message.cshtml-be. Frissítse a jelölést az új hely jelzésére. Hozza létre és futtassa az alkalmazást annak ellenőrzéséhez, hogy a részleges alkalmazás verziója használatban van-e.

RCL-lapok elrendezése

Ha úgy szeretne hivatkozni az RCL-tartalomra, mintha az a webalkalmazás Pages mappájának része lenne, hozza létre az RCL-projektet a következő fájlstruktúrával:

  • RazorUIClassLib/Pages
  • RazorUIClassLib/Pages/Shared

Tegyük fel, hogy RazorUIClassLib/Pages/Shared két részleges fájlt tartalmaz: _Header.cshtml és _Footer.cshtml. A <partial> címkék hozzáadhatók _Layout.cshtml fájlhoz:

<body>
  <partial name="_Header">
  @RenderBody()
  <partial name="_Footer">
</body>

Add hozzá a _ViewStart.cshtml fájlt az RCL-projekt Pages mappájába a gazdagép webalkalmazásának _Layout.cshtml fájljának használatához.

@{
    Layout = "_Layout";
}

RCL létrehozása statikus eszközökkel

Az RCL-hez szükség lehet olyan társ statikus eszközökre, amelyekre az RCL vagy az RCL fogyasztó alkalmazása hivatkozhat. ASP.NET Core lehetővé teszi olyan RCLs-ek létrehozását, amelyek statikus objektumokat tartalmaznak, amelyek elérhetők a fogyasztó alkalmazások számára.

Ha társeszközöket szeretne belefoglalni egy RCL-fájlba, hozzon létre egy wwwroot mappát az osztálytárban, és foglalja bele a szükséges fájlokat ebbe a mappába.

RCL csomagolásakor a wwwroot mappában lévő összes társeszköz automatikusan bekerül a csomagba.

Használja a dotnet pack parancsot a NuGet.exe verzió nuget packhelyett.

Statikus eszközök kizárása

Statikus objektumok kizárásához adja hozzá a kívánt kizárási útvonalat a projektfájl $(DefaultItemExcludes) tulajdonságcsoporthoz. Pontosvesszővel (;) rendelkező bejegyzések elkülönítése.

Az alábbi példában a lib.css mappában lévő wwwroot stíluslap nem tekinthető statikus objektumnak, és nem szerepel a közzétett RCL-ben:

<PropertyGroup>
  <DefaultItemExcludes>$(DefaultItemExcludes);wwwroot\lib.css</DefaultItemExcludes>
</PropertyGroup>

Typescript-integráció

TypeScript-fájlok felvétele RCL-fájlba:

  1. A projektben hivatkozzon a Microsoft.TypeScript.MSBuild NuGet-csomagra.

    Jegyzet

    A csomagok .NET-alkalmazásokhoz való hozzáadásáról a Csomagok telepítése és kezeléseCsomaghasználati munkafolyamat (NuGet-dokumentáció)című cikkben talál útmutatást. Ellenőrizze a megfelelő csomagverziókat a NuGet.org.

  2. Helyezze a TypeScript-fájlokat (.ts) a wwwroot mappán kívülre. Helyezze például a fájlokat egy Client mappába.

  3. Konfigurálja a TypeScript build kimenetét a wwwroot mappához. Állítsa be a TypescriptOutDir tulajdonságot egy PropertyGroup-ben a projektfájlban:

    <TypescriptOutDir>wwwroot</TypescriptOutDir>
    
  4. Adja hozzá a TypeScript célpontot a ResolveCurrentProjectStaticWebAssets-cél függőségeként a projektfájlban lévő PropertyGroup célon belül a következő cél hozzáadásával:

    <ResolveCurrentProjectStaticWebAssetsInputsDependsOn>
      CompileTypeScript;
      $(ResolveCurrentProjectStaticWebAssetsInputs)
    </ResolveCurrentProjectStaticWebAssetsInputsDependsOn>
    

Hivatkozott RCL-ből származó tartalom felhasználása

Az RCL wwwroot mappájában található fájlok az RCL vagy a fogyasztó alkalmazás számára érhetők el az _content/{PACKAGE ID}/előtag alatt. Egy Razor.Class.Lib összállítási névvel rendelkező kódtár, amelynek a projektfájljában nincs megadva <PackageId>, például a statikus tartalom elérési útját eredményezi a _content/Razor.Class.Lib/. NuGet-csomag létrehozásakor, ha az assemblage neve nem azonos a csomagazonosítóval (<PackageId> a kódtár projektfájljában), használja a projektfájlban megadott csomagazonosítót a {PACKAGE ID}helyen.

A fogyasztó alkalmazás a kódtár által biztosított statikus eszközökre hivatkozik <script>, <style>, <img>és egyéb HTML-címkékkel. A fogyasztó alkalmazásnak aktiválnia kell a statikus fájltámogatást Startup.Configure:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    ...

    app.UseStaticFiles();

    ...
}

Ha a felhasználó alkalmazást buildkimenetből (dotnet run) futtatja, a statikus webeszközök alapértelmezés szerint engedélyezve vannak a fejlesztési környezetben. Ha más környezetekben lévő eszközöket szeretne támogatni a buildkimenetből való futtatáskor, hívja meg a UseStaticWebAssets a gazdaépítőn a Program.cs:

using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;

public class Program
{
    public static void Main(string[] args)
    {
        CreateHostBuilder(args).Build().Run();
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStaticWebAssets();
                webBuilder.UseStartup<Startup>();
            });
}

Nem szükséges meghívni UseStaticWebAssets, ha közzétett kimenetből (dotnet publish) futtat egy alkalmazást.

Többprojektes fejlesztési folyamat

A fogyasztóalkalmazás futtatásakor:

  • Az RCL-ben lévő objektumok az eredeti mappájukban maradnak. A vagyontárgyak nem kerülnek át a fogyasztói alkalmazásba.
  • Az RCL wwwroot mappájában végrehajtott módosítások az RCL újraépítése után, a fogyasztó alkalmazás újraépítése nélkül is megjelennek a fogyasztó alkalmazásban.

Az RCL létrehozásakor a rendszer létrehoz egy jegyzékfájlt, amely leírja a statikus webes eszközhelyeket. A fogyasztó alkalmazás futásidőben felolvassa a jegyzékfájlt, hogy felhasználja a hivatkozott projektekből és csomagokból származó eszközöket. Amikor új objektumot ad hozzá egy RCL-hez, az RCL-t újra kell létrehozni, hogy frissítse a jegyzékfájlt, mielőtt egy fogyasztó alkalmazás hozzáférhet az új objektumhoz.

Közzétesz

Az alkalmazás közzétételekor a program az összes hivatkozott projekt és csomag társeszközeit a közzétett alkalmazás wwwroot mappájába másolja a _content/{PACKAGE ID}/alatt. NuGet-csomag készítésekor, ha a szerelvény neve nem egyezik meg a csomagazonosítóval (<PackageId> a kódtár projektfájljában), használja a projektfájlban megadott csomagazonosítót a közzétett elemek {PACKAGE ID} mappájának vizsgálatakor a wwwroot miatt.

További erőforrások

Razor nézetek, oldalak, vezérlők, oldalmodellek, Razor összetevők, nézetösszetevőkés adatmodellek egy Razor osztálykönyvtárba (RCL) építhetők be. Az RCL csomagolható és újra felhasználható. Az alkalmazások tartalmazhatják az RCL-t, és felülbírálhatják a benne található nézeteket és lapokat. Ha egy nézet, részleges nézet vagy Razor lap a webalkalmazásban és az RCL-ben is megtalálható, a webalkalmazásban a Razor korrektúra (.cshtml fájl) elsőbbséget élvez.

Mintakód megtekintése vagy letöltése (hogyan lehet letölteni)

Razor felhasználói felületet tartalmazó osztálytár létrehozása

  • A Visual Studio Fájl menüjében válassza Új>Projectlehetőséget.
  • Válassza ASP.NET Core Web Applicationlehetőséget.
  • Nevezze el a könyvtárat (például "RazorClassLib") >OK. A fájlnév és a létrehozott nézetkönyvtár ütközésének elkerülése érdekében győződjön meg arról, hogy a könyvtár neve nem végződik .Views-ra.
  • Ellenőrizze, hogy ASP.NET Core 2.1 vagy újabb van-e kiválasztva.
  • Válassza Razor Osztálykönyvtár>OKlehetőséget.

Az RCL-nek a következő projektfájlja van:

<Project Sdk="Microsoft.NET.Sdk.Razor">

    <PropertyGroup>
        <TargetFramework>netcoreapp3.1</TargetFramework>
        <AddRazorSupportForMvc>true</AddRazorSupportForMvc>
    </PropertyGroup>

    <ItemGroup>
        <FrameworkReference Include="Microsoft.AspNetCore.App" />
    </ItemGroup>


</Project>

Adjon hozzá Razor fájlokat az RCL-hez.

A ASP.NET Core-sablonok feltételezik, hogy az RCL-tartalom a Areas mappában található. Tekintse meg a RCL-lapok elrendezését, hogy létrehozhasson egy RCL-t, amely a tartalmat a ~/Pageshelyett a ~/Areas/Pages-ben jeleníti meg.

RCL-referencia tartalom

Az RCL-re a következő hivatkozással hivatkozhat:

Útmutató: RCL-projekt létrehozása és használata Razor Pages-projektből

A teljes projekt letöltése és tesztelése egyszerűbb, mint a létrehozása. A mintaletöltés további kódot és hivatkozásokat tartalmaz, amelyek megkönnyítik a projekt tesztelését. Hagyhat visszajelzést ebben a GitHub-kérdésben a letöltési mintákról és a lépésenkénti útmutatókkal kapcsolatos megjegyzéseivel.

A letöltési alkalmazás tesztelése

Ha még nem töltötte le a kész alkalmazást, és inkább az útmutató projektet szeretné létrehozni, ugorjon a következő szakaszra.

Nyissa meg a .sln fájlt a Visual Studióban. Futtassa az alkalmazást.

Kövesse a Teszt WebApp1 utasításait.

RCL létrehozása

Ebben a szakaszban létrejön egy RCL. Razor fájlok hozzáadódnak az RCL-hez.

Hozza létre az RCL-projektet:

  • A Visual Studio Fájl menüjében válassza Új>Projectlehetőséget.
  • Válassza ASP.NET Core Web Applicationlehetőséget.
  • Nevezze el az alkalmazást RazorUIClassLib>OK.
  • Ellenőrizze, hogy ASP.NET Core 2.1 vagy újabb van-e kiválasztva.
  • Válassza Razor Osztálykönyvtár>OKlehetőséget.
  • Adjon hozzá egy RazorRazorUIClassLib/Areas/MyFeature/Pages/Shared/_Message.cshtmlnevű részleges nézetfájlt.

Razor fájlok és mappák hozzáadása a projekthez

  • Cserélje le a RazorUIClassLib/Areas/MyFeature/Pages/Shared/_Message.cshtml jelölést a következő kódra:

    <h3>_Message.cshtml partial view.</h3>
    
    <p>RazorUIClassLib\Areas\MyFeature\Pages\Shared\_Message.cshtml</p>
    
  • Cserélje le a RazorUIClassLib/Areas/MyFeature/Pages/Page1.cshtml jelölést a következő kódra:

    @page
    @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
    
    <h2>Hello from a Razor UI class library!</h2>
    <p> From  RazorUIClassLib\Areas\MyFeature\Pages\Page1.cshtml</p>
    
    <partial name="_Message" />
    

    @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers szükséges a részleges nézet (<partial name="_Message" />) használatához. A @addTagHelper irányelv hozzáadása helyett hozzáadhat egy _ViewImports.cshtml fájlt. Például:

    dotnet new viewimports -o RazorUIClassLib/Areas/MyFeature/Pages
    

    A _ViewImports.cshtmlkapcsolatos további információkért lásd: Megosztott irányelvek importálása

  • Hozza létre az osztálytárat annak ellenőrzéséhez, hogy nincsenek-e fordítóhibák:

    dotnet build RazorUIClassLib
    

A build kimenete RazorUIClassLib.dll-t és RazorUIClassLib.Views.dll-et tartalmaz. RazorUIClassLib.Views.dll tartalmazza az összeállított Razor tartalmat.

A Razor felhasználói felületi kódtár használata egy Razor Pages-projektből

Hozza létre a Razor Pages webalkalmazást:

  • A Megoldáskezelőterületen kattintson a jobb gombbal a megoldásra, >>Új projekthozzáadása parancsot.

  • Válassza ASP.NET Core Web Applicationlehetőséget.

  • Az alkalmazás neve WebApp1.

  • Ellenőrizze, hogy ASP.NET Core 2.1 vagy újabb van-e kiválasztva.

  • Válassza webalkalmazást>OK.

  • A Megoldáskezelőbenkattintson a jobb gombbal a WebApp1 elemre, és válassza a Beállítás Induló Projektkéntlehetőséget.

  • A Megoldáskezelőmenüben kattintson a jobb gombbal a WebApp1 elemre, és válassza a Build Dependencies>Project Dependencieslehetőséget.

  • Ellenőrizze a WebApp1függőségeként a RazorUIClassLib-et.

  • A Megoldáskezelőmenüben kattintson a jobb gombbal a WebApp1 elemre, és válassza >hivatkozás hozzáadásalehetőséget.

  • A Reference Manager párbeszédpanelen ellenőrizze RazorUIClassLib>OK.

Futtassa az alkalmazást.

A WebApp1 tesztelése

Keressen rá a /MyFeature/Page1-ra, hogy ellenőrizze, használatban van-e a Razor felhasználói felületi osztálytár.

Nézetek, részleges nézetek és lapok felülírása

Ha egy nézet, részleges nézet vagy Razor lap a webalkalmazásban és az RCL-ben is megtalálható, a webalkalmazásban a Razor korrektúra (.cshtml fájl) elsőbbséget élvez. Például adja hozzá a WebApp1/Areas/MyFeature/Pages/Page1.cshtml-t a WebApp1-hez, és a WebApp1-en található Lap1 elsőbbséget élvez majd az RCL-en található Lap1 felett.

A mintafájlban nevezze át WebApp1/Areas/MyFeature2-t WebApp1/Areas/MyFeature-re, hogy tesztelje az elsőbbséget.

Másolja a RazorUIClassLib/Areas/MyFeature/Pages/Shared/_Message.cshtml részleges nézetet a WebApp1/Areas/MyFeature/Pages/Shared/_Message.cshtml-be. Frissítse a jelölést az új hely jelzésére. Hozza létre és futtassa az alkalmazást annak ellenőrzéséhez, hogy a részleges alkalmazás verziója használatban van-e.

RCL-lapok elrendezése

Ha úgy szeretne hivatkozni az RCL-tartalomra, mintha az a webalkalmazás Pages mappájának része lenne, hozza létre az RCL-projektet a következő fájlstruktúrával:

  • RazorUIClassLib/Pages
  • RazorUIClassLib/Pages/Shared

Tegyük fel, hogy RazorUIClassLib/Pages/Shared két részleges fájlt tartalmaz: _Header.cshtml és _Footer.cshtml. A <partial> címkék hozzáadhatók _Layout.cshtml fájlhoz:

<body>
  <partial name="_Header">
  @RenderBody()
  <partial name="_Footer">
</body>

Razor nézetek, oldalak, vezérlők, oldalmodellek, Razor összetevők, nézetösszetevőkés adatmodellek egy Razor osztálykönyvtárba (RCL) építhetők be. Az RCL csomagolható és újra felhasználható. Az alkalmazások tartalmazhatják az RCL-t, és felülbírálhatják a benne található nézeteket és lapokat. Ha egy nézet, részleges nézet vagy Razor lap a webalkalmazásban és az RCL-ben is megtalálható, a webalkalmazásban a Razor korrektúra (.cshtml fájl) elsőbbséget élvez.

Mintakód megtekintése vagy letöltése (hogyan lehet letölteni)

Razor felhasználói felületet tartalmazó osztálytár létrehozása

  • A Visual Studióból válassza az Új projekt létrehozása lehetőséget .
  • Válassza a Razor Osztálykönyvtár>Következő lehetőséget.
  • Nevezze el a kódtárat (például "RazorClassLib"), >Létrehozás. A fájlnév és a létrehozott nézetkönyvtár ütközésének elkerülése érdekében győződjön meg arról, hogy a könyvtár neve nem végződik .Views-ra.
  • Ha a nézetek támogatására van szükség, válassza a támogatási oldalakat és nézeteket. Alapértelmezés szerint csak Razor lapok támogatottak. Válassza ki a elemet, és hozza létre.

Az Razor osztálykönyvtár (RCL) sablon alapértelmezésként a Razor összetevők fejlesztésére szolgál. A Támogatási lapok és nézetek beállítás támogatja a lapokat és a nézeteket.

Adjon hozzá Razor fájlokat az RCL-hez.

A ASP.NET Core-sablonok feltételezik, hogy az RCL-tartalom a Areas mappában található. Az alábbi RCL-oldalak elrendezésénél hozzunk létre egy RCL-t, amely a tartalmat ~/Pages teszi elérhetővé, nem pedig ~/Areas/Pages.

RCL-referencia tartalom

Az RCL-re a következő hivatkozással hivatkozhat:

Nézetek, részleges nézetek és lapok felülírása

Ha egy nézet, részleges nézet vagy Razor lap a webalkalmazásban és az RCL-ben is megtalálható, a webalkalmazásban a Razor korrektúra (.cshtml fájl) elsőbbséget élvez. Például adja hozzá a WebApp1/Areas/MyFeature/Pages/Page1.cshtml-t a WebApp1-hez, és a WebApp1-en található Lap1 elsőbbséget élvez majd az RCL-en található Lap1 felett.

A mintafájlban nevezze át WebApp1/Areas/MyFeature2-t WebApp1/Areas/MyFeature-re, hogy tesztelje az elsőbbséget.

Másolja a RazorUIClassLib/Areas/MyFeature/Pages/Shared/_Message.cshtml részleges nézetet a WebApp1/Areas/MyFeature/Pages/Shared/_Message.cshtml-be. Frissítse a jelölést az új hely jelzésére. Készítse el és futtassa az alkalmazást annak ellenőrzésére, hogy az alkalmazás részleges verziója használatban van-e.

Ha az RCL Razor oldalakat használ, engedélyezze a Razor Pages-szolgáltatásokat és -végpontokat az üzemeltetési alkalmazásban:

public void ConfigureServices(IServiceCollection services)
{
    services.AddControllersWithViews();
    services.AddRazorPages();
}

public void Configure(IApplicationBuilder app)
{
    app.UseStaticFiles();
    app.UseRouting();
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");

        endpoints.MapRazorPages();
    });
}

RCL-lapok elrendezése

Ha úgy szeretne hivatkozni az RCL-tartalomra, mintha az a webalkalmazás Pages mappájának része lenne, hozza létre az RCL-projektet a következő fájlstruktúrával:

  • RazorUIClassLib/Pages
  • RazorUIClassLib/Pages/Shared

Tegyük fel, hogy RazorUIClassLib/Pages/Shared két részleges fájlt tartalmaz: _Header.cshtml és _Footer.cshtml. A <partial> címkék hozzáadhatók _Layout.cshtml fájlhoz:

<body>
  <partial name="_Header">
  @RenderBody()
  <partial name="_Footer">
</body>

Add hozzá a _ViewStart.cshtml fájlt az RCL-projekt Pages mappájába a gazdagép webalkalmazásának _Layout.cshtml fájljának használatához.

@{
    Layout = "_Layout";
}

RCL létrehozása statikus eszközökkel

Az RCL-hez szükség lehet olyan társ statikus eszközökre, amelyekre az RCL vagy az RCL fogyasztó alkalmazása hivatkozhat. ASP.NET Core lehetővé teszi olyan RCLs-ek létrehozását, amelyek statikus objektumokat tartalmaznak, amelyek elérhetők a fogyasztó alkalmazások számára.

Ha társeszközöket szeretne belefoglalni egy RCL-fájlba, hozzon létre egy wwwroot mappát az osztálytárban, és foglalja bele a szükséges fájlokat ebbe a mappába.

RCL csomagolásakor a wwwroot mappában lévő összes társeszköz automatikusan bekerül a csomagba.

Használja a dotnet pack parancsot a NuGet.exe verzió nuget packhelyett.

Statikus eszközök kizárása

Statikus objektumok kizárásához adja hozzá a kívánt kizárási útvonalat a projektfájl $(DefaultItemExcludes) tulajdonságcsoporthoz. Pontosvesszővel (;) rendelkező bejegyzések elkülönítése.

Az alábbi példában a lib.css mappában lévő wwwroot stíluslap nem tekinthető statikus objektumnak, és nem szerepel a közzétett RCL-ben:

<PropertyGroup>
  <DefaultItemExcludes>$(DefaultItemExcludes);wwwroot\lib.css</DefaultItemExcludes>
</PropertyGroup>

Typescript-integráció

TypeScript-fájlok felvétele RCL-fájlba:

  1. A projektben hivatkozzon a Microsoft.TypeScript.MSBuild NuGet-csomagra.

    Jegyzet

    A csomagok .NET-alkalmazásokhoz való hozzáadásáról a Csomagok telepítése és kezeléseCsomaghasználati munkafolyamat (NuGet-dokumentáció)című cikkben talál útmutatást. Ellenőrizze a megfelelő csomagverziókat a NuGet.org.

  2. Helyezze a TypeScript-fájlokat (.ts) a wwwroot mappán kívülre. Helyezze például a fájlokat egy Client mappába.

  3. Konfigurálja a TypeScript build kimenetét a wwwroot mappához. Állítsa be a TypescriptOutDir tulajdonságot egy PropertyGroup-ben a projektfájlban:

    <TypescriptOutDir>wwwroot</TypescriptOutDir>
    
  4. Adja hozzá a TypeScript célpontot a ResolveCurrentProjectStaticWebAssets-cél függőségeként a projektfájlban lévő PropertyGroup célon belül a következő cél hozzáadásával:

    <ResolveCurrentProjectStaticWebAssetsInputsDependsOn>
      CompileTypeScript;
      $(ResolveCurrentProjectStaticWebAssetsInputs)
    </ResolveCurrentProjectStaticWebAssetsInputsDependsOn>
    

Hivatkozott RCL-ből származó tartalom felhasználása

Az RCL wwwroot mappájában található fájlok az RCL vagy a fogyasztó alkalmazás számára érhetők el az _content/{PACKAGE ID}/előtag alatt. Egy Razor.Class.Lib összállítási névvel rendelkező kódtár, amelynek a projektfájljában nincs megadva <PackageId>, például a statikus tartalom elérési útját eredményezi a _content/Razor.Class.Lib/. NuGet-csomag létrehozásakor, ha az assemblage neve nem azonos a csomagazonosítóval (<PackageId> a kódtár projektfájljában), használja a projektfájlban megadott csomagazonosítót a {PACKAGE ID}helyen.

A fogyasztó alkalmazás a kódtár által biztosított statikus eszközökre hivatkozik <script>, <style>, <img>és egyéb HTML-címkékkel. A fogyasztó alkalmazásnak aktiválnia kell a statikus fájltámogatást Startup.Configure:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    ...

    app.UseStaticFiles();

    ...
}

Ha a felhasználó alkalmazást buildkimenetből (dotnet run) futtatja, a statikus webeszközök alapértelmezés szerint engedélyezve vannak a fejlesztési környezetben. Más környezetekben lévő erőforrások támogatása érdekében a buildkimenetből való futtatáskor hívja meg a UseStaticWebAssets a host builderen a Program.cs.

using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;

public class Program
{
    public static void Main(string[] args)
    {
        CreateHostBuilder(args).Build().Run();
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStaticWebAssets();
                webBuilder.UseStartup<Startup>();
            });
}

Nem szükséges meghívni UseStaticWebAssets, ha közzétett kimenetből (dotnet publish) futtat egy alkalmazást.

Többprojektes fejlesztési folyamat

A fogyasztóalkalmazás futtatásakor:

  • Az RCL-ben lévő objektumok az eredeti mappájukban maradnak. A vagyontárgyak nem kerülnek át a fogyasztói alkalmazásba.
  • Az RCL wwwroot mappájában végrehajtott módosítások az RCL újraépítése után, a fogyasztó alkalmazás újraépítése nélkül is megjelennek a fogyasztó alkalmazásban.

Az RCL létrehozásakor a rendszer létrehoz egy jegyzékfájlt, amely leírja a statikus webes eszközhelyeket. A fogyasztó alkalmazás futásidőben felolvassa a jegyzékfájlt, hogy felhasználja a hivatkozott projektekből és csomagokból származó eszközöket. Amikor új objektumot ad hozzá egy RCL-hez, az RCL-t újra kell létrehozni, hogy frissítse a jegyzékfájlt, mielőtt egy fogyasztó alkalmazás hozzáférhet az új objektumhoz.

Közzétesz

Az alkalmazás közzétételekor a program az összes hivatkozott projekt és csomag társeszközeit a közzétett alkalmazás wwwroot mappájába másolja a _content/{PACKAGE ID}/alatt. NuGet-csomag készítésekor, ha a szerelvény neve nem egyezik meg a csomagazonosítóval (<PackageId> a kódtár projektfájljában), használja a projektfájlban megadott csomagazonosítót a közzétett elemek {PACKAGE ID} mappájának vizsgálatakor a wwwroot miatt.

További erőforrások