Delen via


Herbruikbare gebruikersinterface maken met behulp van het Razor klassebibliotheekproject in ASP.NET Core

Door Rick Anderson

Razor weergaven, pagina's, controllers, paginamodellen, Razor onderdelen, weergaveonderdelenen gegevensmodellen kunnen worden ingebouwd in een Razor klassebibliotheek (RCL). De RCL kan worden verpakt en hergebruikt. Toepassingen kunnen de RCL bevatten en de weergaven en pagina's die deze bevat overschrijven. Wanneer een weergave, gedeeltelijke weergave of Razor pagina wordt gevonden in zowel de web-app als de RCL, heeft de Razor markering (.cshtml bestand) in de web-app voorrang.

Zie Build-clientwebassets voor uw Razor Class Library-voor informatie over het integreren van npm en webpack in het buildproces voor een RCL.

Een klassebibliotheek maken met een Razor-gebruikersinterface

  • Selecteer in Visual Studio Een nieuw project maken.
  • Selecteer Razor Klassebibliotheek>Volgende.
  • Geef de bibliotheek een naam (bijvoorbeeld 'RazorClassLib'), >Create. Als u een conflict met de gegenereerde weergavebibliotheek wilt voorkomen, moet u ervoor zorgen dat de bibliotheeknaam niet eindigt op .Views.
  • Selecteer Ondersteuningspagina's en weergaven als u wilt dat de bibliotheek pagina's en/of weergaven bevat. Standaard worden alleen Razor onderdelen ondersteund. Selecteer maken.

De Razor Class Library-sjabloon is standaard gericht op de ontwikkeling van Razor-componenten. De optie Ondersteuningspagina's en weergaven ondersteunt pagina's en weergaven. Zie voor meer informatie over RCL-ondersteuning in BlazorASP.NET Core Razor-onderdelen gebruiken vanuit een Razor klassebibliotheek (RCL).

Voeg Razor bestanden toe aan de RCL.

Bij de ASP.NET Core-sjablonen wordt ervan uitgegaan dat de RCL-inhoud zich in de map Areas bevindt. Zie indeling van RCL-pagina's hieronder om een RCL te maken waarmee inhoud in ~/Pages wordt weergegeven in plaats van ~/Areas/Pages.

Referentie RCL-inhoud

Er kan naar de RCL worden verwezen door:

Weergaven, gedeeltelijke weergaven en pagina's overschrijven

Wanneer een weergave, gedeeltelijke weergave of Razor pagina wordt gevonden in zowel de web-app als de RCL, heeft de Razor markering (.cshtml bestand) in de web-app voorrang. Voeg bijvoorbeeld WebApp1/Areas/MyFeature/Pages/Page1.cshtml toe aan WebApp1 en Page1 in de WebApp1 heeft voorrang op Page1 in de RCL.

Wijzig in het voorbeelddownload de naam van WebApp1/Areas/MyFeature2 in WebApp1/Areas/MyFeature om de prioriteit te testen.

Kopieer de RazorUIClassLib/Areas/MyFeature/Pages/Shared/_Message.cshtml gedeeltelijke weergave naar WebApp1/Areas/MyFeature/Pages/Shared/_Message.cshtml. Werk de markering bij om de nieuwe locatie aan te geven. Bouw en voer de app uit om te verifiëren dat de partiële versie van de app wordt gebruikt.

Als de RCL Razor Pages gebruikt, schakelt u de Razor Pages-services en -eindpunten in de hosting-app in:

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();

Indeling RCL-pagina's

Als u wilt verwijzen naar RCL-inhoud alsof deze deel uitmaakt van de map Pages van de web-app, maakt u het RCL-project met de volgende bestandsstructuur:

  • RazorUIClassLib/Pages
  • RazorUIClassLib/Pages/Shared

Stel dat RazorUIClassLib/Pages/Shared twee gedeeltelijke bestanden bevat: _Header.cshtml en _Footer.cshtml. De <partial> tags kunnen worden toegevoegd aan _Layout.cshtml bestand:

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

Voeg het _ViewStart.cshtml bestand toe aan de Pages map van het RCL-project om het _Layout.cshtml-bestand te gebruiken vanuit de hostweb-app:

@{
    Layout = "_Layout";
}

Een RCL maken met statische assets

Een RCL kan aanvullende statische onderdelen vereisen waarnaar kan worden verwezen door de RCL of de app die de RCL gebruikt. ASP.NET Core maakt het mogelijk om RCL's te maken die statische assets bevatten die beschikbaar zijn voor een verbruikende app.

Als u aanvullende assets wilt opnemen als onderdeel van een RCL, maakt u een wwwroot map in de klassebibliotheek en neemt u alle vereiste bestanden in die map op.

Wanneer u een RCL inpakt, worden alle bijbehorende assets in de map wwwroot automatisch opgenomen in het pakket.

Gebruik de opdracht dotnet pack in plaats van de NuGet.exe versie nuget pack.

Klantwebresources toevoegen aan het buildproces

Het integreren van clientwebassets in de build-pijplijn is niettrivieel. Zie Clientwebassets bouwen voor uw Razor Class Library voor meer informatie.

Statische assets uitsluiten

Als u statische assets wilt uitsluiten, voegt u het gewenste uitsluitingspad toe aan de $(DefaultItemExcludes) eigenschapsgroep in het projectbestand. Afzonderlijke vermeldingen met een puntkomma (;).

In het volgende voorbeeld wordt de lib.css stylesheet in de map wwwroot niet beschouwd als een statische asset en is deze niet opgenomen in de gepubliceerde RCL.

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

Typescript-integratie

TypeScript-bestanden opnemen in een RCL:

  • Voeg het Microsoft.TypeScript.MSBuild NuGet-pakket toe aan het project.

    Notitie

    Zie de artikelen onder Installeren en beheren van pakketten in Pakketverbruikworkflow (NuGet-documentatie)voor hulp bij het toevoegen van pakketten aan .NET-apps. Bevestig de juiste pakketversies op NuGet.org.

  • Plaats de TypeScript-bestanden (.ts) buiten de map wwwroot. Plaats de bestanden bijvoorbeeld in een Client map.

  • Voeg de volgende markeringen toe aan het projectbestand:

    • Configureer de Build-uitvoer van TypeScript voor de map wwwroot met de eigenschap TypescriptOutDir.
    • Neem het TypeScript-doel op als een afhankelijkheid van het PrepareForBuildDependsOn doel.
    • Verwijder de uitvoer in de wwwroot folder.
<Project Sdk="Microsoft.NET.Sdk.Razor">
  <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>

Inhoud gebruiken van een RCL waarnaar wordt verwezen

De bestanden die zijn opgenomen in de map wwwroot van de RCL worden onder het voorvoegsel _content/{PACKAGE ID}/toegankelijk gemaakt voor de RCL of de gebruikende app. Een bibliotheek met een assemblynaam van Razor.Class.Lib en zonder een <PackageId> die is opgegeven in het projectbestand, resulteert bijvoorbeeld in een pad naar statische inhoud op _content/Razor.Class.Lib/. Wanneer u een NuGet-pakket maakt en de assemblynaam niet hetzelfde is als de pakket-id (<PackageId> in het projectbestand van de bibliotheek), gebruikt u de pakket-id zoals opgegeven in het projectbestand voor {PACKAGE ID}.

De verbruikende app verwijst naar statische assets die door de bibliotheek worden geleverd met <script>, <style>, <img>en andere HTML-tags. De verbruikende app moet ondersteuning voor statische bestanden hebben ingeschakeld in:

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();

Wanneer u de verbruikende app uitvoert vanuit build-uitvoer (dotnet run), worden statische webassets standaard ingeschakeld in de ontwikkelomgeving. Als u assets in andere omgevingen wilt ondersteunen wanneer deze worden uitgevoerd vanuit builduitvoer, roept u UseStaticWebAssets aan op de hostbouwer in 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();

Het aanroepen van UseStaticWebAssets is niet vereist bij het uitvoeren van een app vanuit gepubliceerde uitvoer (dotnet publish).

Ontwikkelingsstroom voor meerdere projecten

Wanneer de verbruikende app wordt uitgevoerd:

  • De assets in de RCL blijven in hun oorspronkelijke mappen staan. De assets worden niet verplaatst naar de verbruikende app.
  • Elke wijziging in de wwwroot map van de RCL wordt weerspiegeld in de verbruikende app nadat de RCL opnieuw is opgebouwd en zonder de verbruikende app opnieuw te bouwen.

Wanneer de RCL is gebouwd, wordt er een manifest geproduceerd waarin de statische webassetlocaties worden beschreven. De verbruikende app leest het manifest tijdens runtime om de assets te gebruiken uit projecten en pakketten waarnaar wordt verwezen. Wanneer een nieuwe asset wordt toegevoegd aan een RCL, moet de RCL opnieuw worden opgebouwd om het manifest bij te werken voordat een verbruikende app toegang heeft tot de nieuwe asset.

Uitgeven

Wanneer de app wordt gepubliceerd, worden de bijbehorende assets van alle projecten en pakketten waarnaar wordt verwezen, gekopieerd naar de wwwroot map van de gepubliceerde app onder _content/{PACKAGE ID}/. Wanneer u een NuGet-pakket maakt en de assemblynaam niet hetzelfde is als de pakket-id (<PackageId> in het projectbestand van de bibliotheek), gebruikt u de pakket-id zoals opgegeven in het projectbestand voor {PACKAGE ID} bij het controleren van de map wwwroot voor de gepubliceerde assets.

Aanvullende informatiebronnen

Razor weergaven, pagina's, controllers, paginamodellen, Razor onderdelen, weergave-componentenen gegevensmodellen kunnen worden ingebouwd in een Razor klassebibliotheek (RCL). De RCL kan worden verpakt en hergebruikt. Toepassingen kunnen de RCL bevatten en de weergaven en pagina's die deze bevat overschrijven. Wanneer een weergave, gedeeltelijke weergave of Razor pagina wordt gevonden in zowel de web-app als de RCL, heeft de Razor markering (.cshtml bestand) in de web-app voorrang.

Zie voor meer informatie over het integreren van npm en webpack in het buildproces voor een Razor Klassenbibliotheek, webclient-assets bouwen voor uw Razor Klassenbibliotheek.

Een klassebibliotheek maken met Razor-gebruikersinterface

  • Selecteer in Visual Studio Een nieuw project maken.
  • Selecteer Razor Class Library>Volgende.
  • Geef de bibliotheek een naam (bijvoorbeeld 'RazorClassLib'), >Create. Als u een conflict met de gegenereerde weergavebibliotheek wilt voorkomen, moet u ervoor zorgen dat de bibliotheeknaam niet eindigt op .Views.
  • Selecteer ondersteun pagina's en weergaven als u weergaven wilt ondersteunen. Standaard worden alleen Razor Pagina's ondersteund. Selecteer maken.

De sjabloon Razor Class Library (RCL) is standaard voor Razor componentontwikkeling. De optie Ondersteuningspagina's en weergaven ondersteunt pagina's en weergaven.

Voeg Razor bestanden toe aan de RCL.

Bij de ASP.NET Core-sjablonen wordt ervan uitgegaan dat de RCL-inhoud zich in de map Areas bevindt. Zie indeling van RCL-pagina's hieronder om een RCL te maken waarmee inhoud in ~/Pages wordt weergegeven in plaats van ~/Areas/Pages.

Verwijzing naar RCL-inhoud

Er kan naar de RCL worden verwezen door:

Weergaven, gedeeltelijke weergaven en pagina's overschrijven

Wanneer een weergave, gedeeltelijke weergave of Razor pagina wordt gevonden in zowel de web-app als de RCL, heeft de Razor markering (.cshtml bestand) in de web-app voorrang. Voeg bijvoorbeeld WebApp1/Areas/MyFeature/Pages/Page1.cshtml toe aan WebApp1 en Page1 in de WebApp1 heeft voorrang op Page1 in de RCL.

Wijzig in het voorbeelddownload de naam van WebApp1/Areas/MyFeature2 in WebApp1/Areas/MyFeature om de prioriteit te testen.

Kopieer de RazorUIClassLib/Areas/MyFeature/Pages/Shared/_Message.cshtml gedeeltelijke weergave naar WebApp1/Areas/MyFeature/Pages/Shared/_Message.cshtml. Werk de markering bij om de nieuwe locatie aan te geven. Bouw en voer de app uit om te controleren of de versie van het onderdeel binnen de app in gebruik is.

Als de RCL Razor Pages gebruikt, schakelt u de Razor Pages-services en -eindpunten in de hosting-app in:

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();

Indeling RCL-pagina's

Als u wilt verwijzen naar RCL-inhoud alsof deze deel uitmaakt van de map Pages van de web-app, maakt u het RCL-project met de volgende bestandsstructuur:

  • RazorUIClassLib/Pages
  • RazorUIClassLib/Pages/Shared

Stel dat RazorUIClassLib/Pages/Shared twee gedeeltelijke bestanden bevat: _Header.cshtml en _Footer.cshtml. De <partial> tags kunnen worden toegevoegd aan _Layout.cshtml bestand:

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

Voeg het _ViewStart.cshtml bestand toe aan de Pages map van het RCL-project om het _Layout.cshtml-bestand te gebruiken vanuit de hostweb-app:

@{
    Layout = "_Layout";
}

Een RCL maken met statische assets

Een RCL kan aanvullende statische assets vereisen waarnaar kan worden verwezen door zowel de RCL als de gebruikende app van de RCL. ASP.NET Core maakt het mogelijk om RCL's te maken die statische assets bevatten die beschikbaar zijn voor een verbruikende app.

Als u aanvullende assets wilt opnemen als onderdeel van een RCL, maakt u een wwwroot map in de klassebibliotheek en neemt u alle vereiste bestanden in die map op.

Wanneer u een RCL inpakt, worden alle bijbehorende assets in de map wwwroot automatisch opgenomen in het pakket.

Gebruik de opdracht dotnet pack in plaats van de NuGet.exe versie nuget pack.

Statische assets uitsluiten

Als u statische assets wilt uitsluiten, voegt u het gewenste uitsluitingspad toe aan de $(DefaultItemExcludes) eigenschapsgroep in het projectbestand. Afzonderlijke vermeldingen met een puntkomma (;).

In het volgende voorbeeld wordt de stylesheet lib.css in de wwwroot map niet als een statisch bestand beschouwd en is deze niet opgenomen in de gepubliceerde RCL.

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

Typescript-integratie

TypeScript-bestanden opnemen in een RCL:

  1. Verwijs naar het Microsoft.TypeScript.MSBuild NuGet-pakket in het project.

    Notitie

    Zie de artikelen onder Pakketten installeren en beheren in NuGet-documentatie (NuGet-documentatie) voor hulp bij het toevoegen van pakketten aan .NET-apps. Bevestig de juiste pakketversies op NuGet.org.

  2. Plaats de TypeScript-bestanden (.ts) buiten de map wwwroot. Plaats de bestanden bijvoorbeeld in een Client map.

  3. Configureer de Build-uitvoer van TypeScript voor de map wwwroot. Stel de eigenschap TypescriptOutDir in van een PropertyGroup in het projectbestand:

    <TypescriptOutDir>wwwroot</TypescriptOutDir>
    
  4. Voeg het TypeScript-doel toe als een afhankelijkheid van het PrepareForBuildDependsOn doel door het volgende doel toe te voegen in een PropertyGroup in het projectbestand:

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

Inhoud gebruiken van een RCL waarnaar wordt verwezen

De bestanden die zijn opgenomen in de map wwwroot van de RCL worden beschikbaar gesteld aan de RCL of de gebruikende app onder het voorvoegsel _content/{PACKAGE ID}/. Een bibliotheek met een assemblynaam van Razor.Class.Lib en zonder een <PackageId> die is opgegeven in het projectbestand, resulteert bijvoorbeeld in een pad naar statische inhoud op _content/Razor.Class.Lib/. Wanneer u een NuGet-pakket maakt en de assemblynaam niet hetzelfde is als de pakket-id (<PackageId> in het projectbestand van de bibliotheek), gebruikt u de pakket-id zoals opgegeven in het projectbestand voor {PACKAGE ID}.

De verbruikende app verwijst naar statische assets die door de bibliotheek worden geleverd met <script>, <style>, <img>en andere HTML-tags. De verbruikende app moet ondersteuning voor statische bestanden hebben ingeschakeld in:

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();

Wanneer u de verbruikende app uitvoert vanuit build-uitvoer (dotnet run), worden statische webassets standaard ingeschakeld in de ontwikkelomgeving. Als u assets in andere omgevingen wilt ondersteunen wanneer deze worden uitgevoerd vanuit builduitvoer, roept u UseStaticWebAssets aan op de hostbouwer in 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();

Opmerking: voor .NET 6 is alleen builder.WebHost.UseWebRoot("wwwroot").UseStaticWebAssetsaanroepen vereist. Zie dit GitHub-probleemvoor meer informatie.

Het aanroepen van UseStaticWebAssets is niet vereist bij het uitvoeren van een app vanuit gepubliceerde uitvoer (dotnet publish).

Ontwikkelingsstroom voor meerdere projecten

Wanneer de verbruikende app wordt uitgevoerd:

  • De assets in de RCL blijven in hun oorspronkelijke mappen staan. De assets worden niet verplaatst naar de consumptie-app.
  • Elke wijziging in de wwwroot map van de RCL wordt weerspiegeld in de verbruikende app nadat de RCL opnieuw is opgebouwd en zonder de verbruikende app opnieuw te bouwen.

Wanneer de RCL is gebouwd, wordt er een manifest geproduceerd waarin de statische webassetlocaties worden beschreven. De verbruikende app leest het manifest tijdens runtime om de assets te gebruiken uit projecten en pakketten waarnaar wordt verwezen. Wanneer een nieuwe asset wordt toegevoegd aan een RCL, moet de RCL opnieuw worden opgebouwd om het manifest bij te werken voordat een verbruikende app toegang heeft tot de nieuwe asset.

Uitgeven

Wanneer de app wordt gepubliceerd, worden de bijbehorende assets van alle projecten en pakketten waarnaar wordt verwezen, gekopieerd naar de wwwroot map van de gepubliceerde app onder _content/{PACKAGE ID}/. Wanneer u een NuGet-pakket maakt en de assemblynaam niet hetzelfde is als de pakket-id (<PackageId> in het projectbestand van de bibliotheek), gebruikt u de pakket-id zoals opgegeven in het projectbestand voor {PACKAGE ID} bij het controleren van de map wwwroot voor de gepubliceerde assets.

Aanvullende informatiebronnen

Razor weergaven, pagina's, controllers, paginamodellen, Razor onderdelen, weergave-onderdelenen gegevensmodellen kunnen worden ingebouwd in een Razor classbibliotheek (RCL). De RCL kan worden verpakt en hergebruikt. Toepassingen kunnen de RCL bevatten en de weergaven en pagina's die deze bevat overschrijven. Wanneer een weergave, gedeeltelijke weergave of Razor pagina wordt gevonden in zowel de web-app als de RCL, heeft de Razor markering (.cshtml bestand) in de web-app voorrang.

Voorbeeldcode weergeven of downloaden (hoe te downloaden)

Een klassebibliotheek maken met Razor-gebruikersinterface

  • Selecteer in Visual Studio Een nieuw project maken.
  • Selecteer Razor Class Library>Volgende.
  • Geef de bibliotheek een naam (bijvoorbeeld "RazorClassLib"), >>maken Volgende. Als u een conflict met de gegenereerde weergavebibliotheek wilt voorkomen, moet u ervoor zorgen dat de bibliotheeknaam niet eindigt op .Views.
  • Selecteer het doelplatform -. Controleer ☑ ondersteuningspagina's en weergaven om weergaven te ondersteunen. Standaard worden alleen Razor onderdelen ondersteund. Selecteer maken.

De sjabloon van de Razor klasse-bibliotheek (RCL) is standaard ingesteld op Razor componentontwikkeling. De optie Ondersteuningspagina's en weergaven biedt ondersteuning voor pagina's en weergaven.

Voeg Razor bestanden toe aan de RCL.

Bij de ASP.NET Core-sjablonen wordt ervan uitgegaan dat de RCL-inhoud zich in de map Areas bevindt. Zie indeling van RCL-pagina's om een RCL te maken waarmee inhoud in ~/Pages wordt weergegeven in plaats van ~/Areas/Pages.

Verwijs naar RCL-inhoud

Naar de RCL kan worden verwezen door:

Weergaven, gedeeltelijke weergaven en pagina's overschrijven

Wanneer een weergave, gedeeltelijke weergave of Razor pagina wordt gevonden in zowel de web-app als de RCL, heeft de Razor markering (.cshtml bestand) in de web-app voorrang. Voeg bijvoorbeeld WebApp1/Areas/MyFeature/Pages/Page1.cshtml toe aan WebApp1 en Page1 in de WebApp1 heeft voorrang op Page1 in de RCL.

Wijzig in het voorbeelddownload de naam van WebApp1/Areas/MyFeature2 in WebApp1/Areas/MyFeature om de prioriteit te testen.

Kopieer de RazorUIClassLib/Areas/MyFeature/Pages/Shared/_Message.cshtml gedeeltelijke weergave naar WebApp1/Areas/MyFeature/Pages/Shared/_Message.cshtml. Werk de markering bij om de nieuwe locatie aan te geven. Bouw en voer de app uit om te controleren of de versie van de app van het onderdeel wordt gebruikt.

Indeling RCL-pagina's

Als u wilt verwijzen naar RCL-inhoud alsof deze deel uitmaakt van de map Pages van de web-app, maakt u het RCL-project met de volgende bestandsstructuur:

  • RazorUIClassLib/Pages
  • RazorUIClassLib/Pages/Shared

Stel dat RazorUIClassLib/Pages/Shared twee gedeeltelijke bestanden bevat: _Header.cshtml en _Footer.cshtml. De <partial> tags kunnen worden toegevoegd aan _Layout.cshtml bestand:

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

Voeg het _ViewStart.cshtml bestand toe aan de Pages map van het RCL-project om het _Layout.cshtml-bestand te gebruiken vanuit de hostweb-app:

@{
    Layout = "_Layout";
}

Een RCL maken met statische assets

Een RCL vereist mogelijk aanvullende statische assets waarnaar kan worden verwezen door de RCL of de verbruikende app van de RCL. ASP.NET Core maakt het mogelijk om RCL's te maken die statische assets bevatten die beschikbaar zijn voor een verbruikende app.

Als u aanvullende assets wilt opnemen als onderdeel van een RCL, maakt u een wwwroot map in de klassebibliotheek en neemt u alle vereiste bestanden in die map op.

Wanneer u een RCL inpakt, worden alle bijbehorende assets in de map wwwroot automatisch opgenomen in het pakket.

Gebruik de opdracht dotnet pack in plaats van de NuGet.exe versie nuget pack.

Statische assets uitsluiten

Als u statische assets wilt uitsluiten, voegt u het gewenste uitsluitingspad toe aan de $(DefaultItemExcludes) eigenschapsgroep in het projectbestand. Afzonderlijke vermeldingen met een puntkomma (;).

In het volgende voorbeeld wordt het lib.css opmaakmodel in de map wwwroot niet beschouwd als een statische asset en is deze niet opgenomen in de gepubliceerde RCL:

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

Typescript-integratie

TypeScript-bestanden opnemen in een RCL:

  1. Voeg het Microsoft.TypeScript.MSBuild NuGet-pakket toe aan het project.

    Notitie

    Zie de artikelen onder Pakketten installeren en beheren bij Het pakketconsumptiewerkwijze in de NuGet-documentatievoor begeleiding bij het toevoegen van pakketten aan .NET-apps. Bevestig de juiste pakketversies op NuGet.org.

  2. Plaats de TypeScript-bestanden (.ts) buiten de map wwwroot. Plaats de bestanden bijvoorbeeld in een Client map.

  3. Configureer de Build-uitvoer van TypeScript voor de map wwwroot. Stel de eigenschap TypescriptOutDir in van een PropertyGroup in het projectbestand:

    <TypescriptOutDir>wwwroot</TypescriptOutDir>
    
  4. Voeg het TypeScript-doel toe als een afhankelijkheid van het ResolveCurrentProjectStaticWebAssets doel door het volgende doel toe te voegen in een PropertyGroup in het projectbestand:

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

Inhoud gebruiken van een RCL waarnaar wordt verwezen

De bestanden die zijn opgenomen in de map wwwroot van de RCL, worden beschikbaar gesteld aan de RCL of de gebruikersapp onder het voorvoegsel _content/{PACKAGE ID}/. Een bibliotheek met een assemblynaam van Razor.Class.Lib en zonder een <PackageId> die is opgegeven in het projectbestand, resulteert bijvoorbeeld in een pad naar statische inhoud op _content/Razor.Class.Lib/. Wanneer u een NuGet-pakket maakt en de assemblynaam niet hetzelfde is als de pakket-id (<PackageId> in het projectbestand van de bibliotheek), gebruikt u de pakket-id zoals opgegeven in het projectbestand voor {PACKAGE ID}.

De verbruikende app verwijst naar statische assets die door de bibliotheek worden geleverd met <script>, <style>, <img>en andere HTML-tags. De verbruikende app moet ondersteuning voor statische bestanden hebben ingeschakeld in Startup.Configure:

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

    app.UseStaticFiles();

    ...
}

Wanneer u de verbruikende app uitvoert vanuit build-uitvoer (dotnet run), worden statische webassets standaard ingeschakeld in de ontwikkelomgeving. Als u assets in andere omgevingen wilt ondersteunen wanneer deze worden uitgevoerd vanuit builduitvoer, roept u UseStaticWebAssets aan op de hostbouwer in 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>();
            });
}

Het aanroepen van UseStaticWebAssets is niet vereist bij het uitvoeren van een app vanuit gepubliceerde uitvoer (dotnet publish).

Ontwikkelingsstroom voor meerdere projecten

Wanneer de verbruikende app wordt uitgevoerd:

  • De assets in de RCL blijven in hun oorspronkelijke mappen staan. De assets worden niet verplaatst naar de verbruikende app.
  • Elke wijziging in de wwwroot map van de RCL wordt weerspiegeld in de verbruikende app nadat de RCL opnieuw is opgebouwd en zonder de verbruikende app opnieuw te bouwen.

Wanneer de RCL is gebouwd, wordt er een manifest geproduceerd waarin de statische webassetlocaties worden beschreven. De verbruikende app leest het manifest tijdens runtime om de assets te gebruiken uit projecten en pakketten waarnaar wordt verwezen. Wanneer een nieuwe asset wordt toegevoegd aan een RCL, moet de RCL opnieuw worden opgebouwd om het manifest bij te werken voordat een verbruikende app toegang heeft tot de nieuwe asset.

Uitgeven

Wanneer de app wordt gepubliceerd, worden de bijbehorende assets van alle projecten en pakketten waarnaar wordt verwezen, gekopieerd naar de wwwroot map van de gepubliceerde app onder _content/{PACKAGE ID}/. Wanneer u een NuGet-pakket maakt en de assemblynaam niet hetzelfde is als de pakket-id (<PackageId> in het projectbestand van de bibliotheek), gebruikt u de pakket-id zoals opgegeven in het projectbestand voor {PACKAGE ID} bij het controleren van de map wwwroot voor de gepubliceerde assets.

Aanvullende informatiebronnen

Razor weergaven, pagina's, controllers, paginamodellen, Razor onderdelen, weergaveonderdelenen gegevensmodellen kunnen worden ingebouwd in een Razor classbibliotheek (RCL). De RCL kan worden verpakt en hergebruikt. Toepassingen kunnen de RCL bevatten en de weergaven en pagina's die deze bevat overschrijven. Wanneer een weergave, gedeeltelijke weergave of Razor pagina wordt gevonden in zowel de web-app als de RCL, heeft de Razor markering (.cshtml bestand) in de web-app voorrang.

Voorbeeldcode bekijken of downloaden (hoe te downloaden)

Een klassebibliotheek maken met een Razor-gebruikersinterface

  • Selecteer in het menu Bestand van Visual Studio Nieuw>Project.
  • Selecteer ASP.NET Core Web-applicatie.
  • Geef de bibliotheek een naam (bijvoorbeeld 'RazorClassLib') >OK. Als u een conflict met de gegenereerde weergavebibliotheek wilt voorkomen, moet u ervoor zorgen dat de bibliotheeknaam niet eindigt op .Views.
  • Controleer of ASP.NET Core 2.1 of hoger is geselecteerd.
  • Selecteer Razor Klassebibliotheek>OK.

Een RCL heeft het volgende projectbestand:

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

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

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


</Project>

Voeg Razor bestanden toe aan de RCL.

Bij de ASP.NET Core-sjablonen wordt ervan uitgegaan dat de RCL-inhoud zich in de map Areas bevindt. Zie indeling van RCL-pagina's om een RCL te maken waarmee inhoud in ~/Pages wordt weergegeven in plaats van ~/Areas/Pages.

Referentie RCL-inhoud

Er kan naar de RCL worden verwezen door:

Overzicht: Een RCL-project maken en gebruiken vanuit een Razor Pages-project

U kunt het volledige project downloaden en testen in plaats van het te maken. Het voorbeelddownload bevat aanvullende code en koppelingen waarmee het project eenvoudig te testen is. U kunt feedback achterlaten in dit GitHub-probleem met uw opmerkingen over downloadvoorbeelden en stapsgewijze instructies.

De download-app testen

Als u de voltooide app niet hebt gedownload en liever zelf het walkthrough-project wilt maken, springt u naar de volgende sectie.

Open het .sln-bestand in Visual Studio. Voer de app uit.

Volg de instructies in Test WebApp1

Een RCL maken

In deze sectie wordt een RCL gemaakt. Razor bestanden worden toegevoegd aan de RCL.

Maak het RCL-project:

  • Selecteer in het Visual Studio Bestand menu NieuwProject.
  • Selecteer ASP.NET Core Web Application.
  • Geef de app de naam RazorUIClassLib>OK.
  • Controleer of ASP.NET Core 2.1 of hoger is geselecteerd.
  • Selecteer Razor Klassebibliotheek>OK.
  • Voeg een Razor gedeeltelijke weergavebestand toe met de naam RazorUIClassLib/Areas/MyFeature/Pages/Shared/_Message.cshtml.

Razor bestanden en mappen toevoegen aan het project

  • Vervang de markeringen in RazorUIClassLib/Areas/MyFeature/Pages/Shared/_Message.cshtml door de volgende code:

    <h3>_Message.cshtml partial view.</h3>
    
    <p>RazorUIClassLib\Areas\MyFeature\Pages\Shared\_Message.cshtml</p>
    
  • Vervang de markeringen in RazorUIClassLib/Areas/MyFeature/Pages/Page1.cshtml door de volgende code:

    @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 is vereist voor het gebruik van de gedeeltelijke weergave (<partial name="_Message" />). In plaats van de @addTagHelper instructie op te slaan, kunt u een _ViewImports.cshtml-bestand toevoegen. Bijvoorbeeld:

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

    Zie Gedeelde richtlijnen importeren voor meer informatie over _ViewImports.cshtml

  • Bouw de klassebibliotheek om te controleren of er geen compilerfouten zijn:

    dotnet build RazorUIClassLib
    

De build-uitvoer bevat RazorUIClassLib.dll en RazorUIClassLib.Views.dll. RazorUIClassLib.Views.dll bevat de gecompileerde Razor inhoud.

De Razor UI-bibliotheek gebruiken vanuit een Razor Pages-project

Maak de web-app Razor Pages:

  • Klik in Solution Explorer-met de rechtermuisknop op de oplossing >Add>New Project.

  • Selecteer ASP.NET Core Web Application.

  • Noem de app WebApp1-.

  • Controleer of ASP.NET Core 2.1 of hoger is geselecteerd.

  • Selecteer Webtoepassing>OK.

  • Klik in Solution Explorermet de rechtermuisknop op WebApp1- en selecteer Instellen als opstartproject.

  • Klik in Solution Explorermet de rechtermuisknop op WebApp1- en selecteer Build Dependencies>Project Dependencies.

  • Controleer RazorUIClassLib als een afhankelijkheid van WebApp1-.

  • Klik in Solution Explorermet de rechtermuisknop op WebApp1 en selecteer de optie >Verwijzingtoevoegen.

  • Controleer in het dialoogvenster Reference ManagerRazorUIClassLib>OK.

Voer de app uit.

WebApp1 testen

Blader naar /MyFeature/Page1 om te controleren of de Razor UI-klassebibliotheek wordt gebruikt.

Overschrijf weergaven, gedeeltelijke weergaven en pagina's

Wanneer een weergave, gedeeltelijke weergave of Razor pagina wordt gevonden in zowel de web-app als de RCL, heeft de Razor markering (.cshtml bestand) in de web-app voorrang. Voeg bijvoorbeeld WebApp1/Areas/MyFeature/Pages/Page1.cshtml toe aan WebApp1 en Page1 in de WebApp1 heeft voorrang op Page1 in de RCL.

Wijzig in het voorbeelddownload de naam van WebApp1/Areas/MyFeature2 in WebApp1/Areas/MyFeature om de prioriteit te testen.

Kopieer de RazorUIClassLib/Areas/MyFeature/Pages/Shared/_Message.cshtml gedeeltelijke weergave naar WebApp1/Areas/MyFeature/Pages/Shared/_Message.cshtml. Werk de markering bij om de nieuwe locatie aan te geven. Bouw en voer de app uit om te controleren of de gedeeltelijke versie van de app wordt gebruikt.

Indeling RCL-pagina’s

Als u wilt verwijzen naar RCL-inhoud alsof deze deel uitmaakt van de map Pages van de web-app, maakt u het RCL-project met de volgende bestandsstructuur:

  • RazorUIClassLib/Pages
  • RazorUIClassLib/Pages/Shared

Stel dat RazorUIClassLib/Pages/Shared twee gedeeltelijke bestanden bevat: _Header.cshtml en _Footer.cshtml. De <partial> tags kunnen worden toegevoegd aan _Layout.cshtml bestand:

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

Razor weergaven, pagina's, controllers, paginamodellen, Razor onderdelen, View-onderdelenen gegevensmodellen kunnen worden ingebouwd in een Razor classbibliotheek (RCL). De RCL kan worden verpakt en hergebruikt. Toepassingen kunnen de RCL bevatten en de weergaven en pagina's die deze bevat overschrijven. Wanneer een weergave, gedeeltelijke weergave of Razor pagina wordt gevonden in zowel de web-app als de RCL, heeft de Razor markering (.cshtml bestand) in de web-app voorrang.

Bekijk of download voorbeeldcode (hoe te downloaden)

Een klassebibliotheek maken met een Razor-gebruikersinterface

  • Selecteer in Visual Studio Een nieuw project maken.
  • Selecteer Razor Class Library>Volgende.
  • Geef de bibliotheek een naam (bijvoorbeeld 'RazorClassLib'), >Create. Als u een conflict met de gegenereerde weergavebibliotheek wilt voorkomen, moet u ervoor zorgen dat de bibliotheeknaam niet eindigt op .Views.
  • Selecteer ondersteuningspagina's en weergaven als u weergaven wilt ondersteunen. Standaard worden alleen Razor Pagina's ondersteund. Selecteer Maak.

De Razor klassenbibliotheek (RCL) sjabloon is standaard ingesteld op de ontwikkeling van Razor componenten. De optie Ondersteuningspagina's en weergaven biedt ondersteuning voor pagina's en weergaven.

Voeg Razor bestanden toe aan de RCL.

Bij de ASP.NET Core-sjablonen wordt ervan uitgegaan dat de RCL-inhoud zich in de map Areas bevindt. Zie indeling van RCL-pagina's hieronder om een RCL te maken waarmee inhoud in ~/Pages wordt weergegeven in plaats van ~/Areas/Pages.

Referentie RCL-inhoud

Er kan naar de RCL worden verwezen door:

Overschrijf weergaven, gedeeltelijke weergaven en pagina's.

Wanneer een weergave, gedeeltelijke weergave of Razor pagina wordt gevonden in zowel de web-app als de RCL, heeft de Razor markering (.cshtml bestand) in de web-app voorrang. Voeg bijvoorbeeld WebApp1/Areas/MyFeature/Pages/Page1.cshtml toe aan WebApp1 en Page1 in de WebApp1 heeft voorrang op Page1 in de RCL.

Wijzig in het voorbeelddownload de naam van WebApp1/Areas/MyFeature2 in WebApp1/Areas/MyFeature om de prioriteit te testen.

Kopieer de RazorUIClassLib/Areas/MyFeature/Pages/Shared/_Message.cshtml gedeeltelijke weergave naar WebApp1/Areas/MyFeature/Pages/Shared/_Message.cshtml. Werk de markering bij om de nieuwe locatie aan te geven. Bouw en voer de app uit om te controleren of de gedeeltelijke versie van de app wordt gebruikt.

Als de RCL Razor Pages gebruikt, schakelt u de Razor Pages-services en -eindpunten in de hosting-app in:

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();
    });
}

Indeling van RCL-pagina's

Als u wilt verwijzen naar RCL-inhoud alsof deze deel uitmaakt van de map Pages van de web-app, maakt u het RCL-project met de volgende bestandsstructuur:

  • RazorUIClassLib/Pages
  • RazorUIClassLib/Pages/Shared

Stel dat RazorUIClassLib/Pages/Shared twee gedeeltelijke bestanden bevat: _Header.cshtml en _Footer.cshtml. De <partial> tags kunnen worden toegevoegd aan _Layout.cshtml bestand:

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

Voeg het _ViewStart.cshtml bestand toe aan de Pages map van het RCL-project om het _Layout.cshtml-bestand te gebruiken vanuit de hostweb-app:

@{
    Layout = "_Layout";
}

Een RCL maken met statische assets

Een RCL kan aanvullende statische assets nodig hebben waarnaar kan worden verwezen door zowel de RCL als de app die de RCL gebruikt. ASP.NET Core maakt het mogelijk om RCL's te maken die statische assets bevatten die beschikbaar zijn voor een verbruikende app.

Als u aanvullende assets wilt opnemen als onderdeel van een RCL, maakt u een wwwroot map in de klassebibliotheek en neemt u alle vereiste bestanden in die map op.

Wanneer u een RCL inpakt, worden alle bijbehorende assets in de map wwwroot automatisch opgenomen in het pakket.

Gebruik de opdracht dotnet pack in plaats van de NuGet.exe versie nuget pack.

Statische assets uitsluiten

Als u statische assets wilt uitsluiten, voegt u het gewenste uitsluitingspad toe aan de $(DefaultItemExcludes) eigenschapsgroep in het projectbestand. Afzonderlijke vermeldingen met een puntkomma (;).

In het volgende voorbeeld wordt het lib.css stijlblad in de map wwwroot niet beschouwd als een statische bron en is het niet opgenomen in de gepubliceerde RCL.

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

Typescript-integratie

TypeScript-bestanden opnemen in een RCL:

  1. Verwijs naar het Microsoft.TypeScript.MSBuild NuGet-pakket in het project.

    Notitie

    Zie de artikelen onder Pakketten installeren en beheren bij Package consumption workflow (NuGet-documentatie)voor hulp bij het toevoegen van pakketten aan .NET-apps. Bevestig de juiste pakketversies op NuGet.org.

  2. Plaats de TypeScript-bestanden (.ts) buiten de map wwwroot. Plaats de bestanden bijvoorbeeld in een Client map.

  3. Configureer de Build-uitvoer van TypeScript voor de map wwwroot. Stel de eigenschap TypescriptOutDir in van een PropertyGroup in het projectbestand:

    <TypescriptOutDir>wwwroot</TypescriptOutDir>
    
  4. Voeg het TypeScript-doel toe als een afhankelijkheid van het ResolveCurrentProjectStaticWebAssets doel door het volgende doel toe te voegen in een PropertyGroup in het projectbestand:

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

Inhoud gebruiken van een RCL waarnaar wordt verwezen

De bestanden die zijn opgenomen in de map wwwroot van de RCL, worden toegankelijk gemaakt voor de RCL of de gebruikende app onder het voorvoegsel _content/{PACKAGE ID}/. Een bibliotheek met een assemblynaam van Razor.Class.Lib en zonder een <PackageId> die is opgegeven in het projectbestand, resulteert bijvoorbeeld in een pad naar statische inhoud op _content/Razor.Class.Lib/. Wanneer u een NuGet-pakket maakt en de assemblynaam niet hetzelfde is als de pakket-id (<PackageId> in het projectbestand van de bibliotheek), gebruikt u de pakket-id zoals opgegeven in het projectbestand voor {PACKAGE ID}.

De verbruikende app verwijst naar statische assets die door de bibliotheek worden geleverd met <script>, <style>, <img>en andere HTML-tags. De applicatie die bestanden verbruikt moet ondersteuning voor statische bestanden hebben ingeschakeld in Startup.Configure:

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

    app.UseStaticFiles();

    ...
}

Wanneer u de verbruikende app uitvoert vanuit build-uitvoer (dotnet run), worden statische webassets standaard ingeschakeld in de ontwikkelomgeving. Als u assets in andere omgevingen wilt ondersteunen wanneer deze worden uitgevoerd vanuit builduitvoer, roept u UseStaticWebAssets aan op de hostbouwer in 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>();
            });
}

Het aanroepen van UseStaticWebAssets is niet vereist bij het uitvoeren van een app vanuit gepubliceerde uitvoer (dotnet publish).

Ontwikkelingsstroom voor meerdere projecten

Wanneer de verbruikende app wordt uitgevoerd:

  • De assets in de RCL blijven in hun oorspronkelijke mappen staan. De assets worden niet verplaatst naar de verbruikende app.
  • Elke wijziging in de wwwroot map van de RCL wordt weerspiegeld in de verbruikende app nadat de RCL opnieuw is opgebouwd en zonder de verbruikende app opnieuw te bouwen.

Wanneer de RCL is gebouwd, wordt er een manifest geproduceerd waarin de statische webassetlocaties worden beschreven. De verbruikende app leest het manifest tijdens runtime om de assets te gebruiken uit projecten en pakketten waarnaar wordt verwezen. Wanneer een nieuwe asset wordt toegevoegd aan een RCL, moet de RCL opnieuw worden opgebouwd om het manifest bij te werken voordat een verbruikende app toegang heeft tot de nieuwe asset.

Uitgeven

Wanneer de app wordt gepubliceerd, worden de bijbehorende assets van alle projecten en pakketten waarnaar wordt verwezen, gekopieerd naar de wwwroot map van de gepubliceerde app onder _content/{PACKAGE ID}/. Wanneer u een NuGet-pakket maakt en de assemblynaam niet hetzelfde is als de pakket-id (<PackageId> in het projectbestand van de bibliotheek), gebruikt u de pakket-id zoals opgegeven in het projectbestand voor {PACKAGE ID} bij het controleren van de map wwwroot voor de gepubliceerde assets.

Aanvullende informatiebronnen