Ú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:
- NuGet-csomag. Lásd: NuGet-csomagok létrehozása és dotnet-csomag hozzáadása és NuGet-csomag létrehozása és közzététele.
-
{ProjectName}.csproj
. Nézze meg a dotnet-add reference.
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 pack
helyett.
Ü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
) awwwroot
mappán kívülre. Helyezze például a fájlokat egyClient
mappába.Adja hozzá a következő korrektúrát a projektfájlhoz:
- Konfigurálja az
wwwroot
mappa TypeScript buildkimenetét aTypescriptOutDir
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 folder
szekcióból.
- Konfigurálja az
<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:
- NuGet-csomag. Lásd: NuGet-csomagok létrehozása és dotnet-csomag hozzáadása és NuGet-csomag létrehozása és közzététele.
-
{ProjectName}.csproj
. Nézze meg a dotnet-add reference.
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 pack
helyett.
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
) awwwroot
mappán kívülre. Helyezze például a fájlokat egyClient
mappába.Konfigurálja a TypeScript build kimenetét a
wwwroot
mappához. Állítsa be aTypescriptOutDir
tulajdonságot egyPropertyGroup
-ben a projektfájlban:<TypescriptOutDir>wwwroot</TypescriptOutDir>
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").UseStaticWebAssets
hí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 ~/Pages
helyett a ~/Areas/Pages
-ben jeleníti meg.
RCL-referencia tartalom
Az RCL-re a következő hivatkozással hivatkozhat:
- NuGet-csomag. Lásd: NuGet-csomagok létrehozása és dotnet-csomag hozzáadása és NuGet-csomag létrehozása és közzététele.
-
{ProjectName}.csproj
. Nézze meg a dotnet-add reference.
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 pack
helyett.
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
) awwwroot
mappán kívülre. Helyezze például a fájlokat egyClient
mappába.Konfigurálja a TypeScript build kimenetét a
wwwroot
mappához. Állítsa be aTypescriptOutDir
tulajdonságot egyPropertyGroup
-ben a projektfájlban:<TypescriptOutDir>wwwroot</TypescriptOutDir>
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 ~/Pages
helyett a ~/Areas/Pages
-ben jeleníti meg.
RCL-referencia tartalom
Az RCL-re a következő hivatkozással hivatkozhat:
- NuGet-csomag. Lásd: NuGet-csomagok létrehozása és dotnet-csomag hozzáadása és NuGet-csomag létrehozása és közzététele.
-
{ProjectName}.csproj
. Nézze meg a dotnet-add reference.
Ú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 Razor
RazorUIClassLib/Areas/MyFeature/Pages/Shared/_Message.cshtml
nevű 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.cshtml
kapcsolatos további információkért lásd: Megosztott irányelvek importálásaHozza 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:
- NuGet-csomag. Lásd: NuGet-csomagok létrehozása és dotnet-csomag hozzáadása és NuGet-csomag létrehozása és közzététele.
-
{ProjectName}.csproj
. Nézze meg a dotnet-add reference.
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 pack
helyett.
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
) awwwroot
mappán kívülre. Helyezze például a fájlokat egyClient
mappába.Konfigurálja a TypeScript build kimenetét a
wwwroot
mappához. Állítsa be aTypescriptOutDir
tulajdonságot egyPropertyGroup
-ben a projektfájlban:<TypescriptOutDir>wwwroot</TypescriptOutDir>
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.