Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Autor: Rick Anderson
Razor widoki, strony, kontrolery, modele stron, Razor składniki, składniki widoków i modele danych mogą być wbudowane w bibliotekę Razor klas (RCL). Można spakować i ponownie użyć RCL. Aplikacje mogą zawierać RCL i nadpisywać widoki oraz strony, które zawiera. Gdy widok, widok częściowy lub Razor strona zostanie znaleziony zarówno w aplikacji internetowej, jak i w liście RCL, Razor pierwszeństwo ma znacznik (.cshtml plik) w aplikacji internetowej.
Aby uzyskać informacje na temat sposobu integrowania npm i webpack z procesem kompilacji dla biblioteki klas RCL, zobacz Tworzenie zasobów internetowych klienta dla Razor biblioteki klas.
Tworzenie biblioteki klas zawierającej interfejs Razor użytkownika
- w programie Visual Studio
- .NET CLI (Interfejs wiersza polecenia .NET)
- W programie Visual Studio wybierz pozycję Utwórz nowy projekt.
- Wybierz Razor Bibliotekę klas>, Dalej.
- Nadaj bibliotece nazwę (na przykład "RazorClassLib"), >Utwórz. Aby uniknąć kolizji nazwy pliku z wygenerowaną biblioteką widoków, upewnij się, że nazwa biblioteki nie kończy się na .
.Views - Wybierz pozycję Strony i widoki pomocy technicznej, jeśli potrzebujesz, aby biblioteka zawierała strony i/lub widoki. Domyślnie obsługiwane są tylko Razor składniki. Wybierz Utwórz.
Szablon Razor Biblioteka Klas jest domyślnie przeznaczony do Razor tworzenia składników. Opcja Strony i Widoki wspiera strony i widoki. Aby uzyskać więcej informacji na temat wsparcia RCL w programie Blazor, zobacz Korzystanie ze składników ASP.NET Core Razor z biblioteki klas Razor (RCL).
Dodaj pliki Razor do RCL.
Szablony ASP.NET Core zakładają, że zawartość listy RCL znajduje się w folderze Areas . Zobacz układ stron RCL poniżej, aby utworzyć RCL, która eksponuje zawartość ~/Pages zamiast ~/Areas/Pages.
Odwołanie do zawartości RCL
Można odwoływać się do RCL za pomocą:
- Pakiet NuGet. Zobacz Tworzenie pakietów NuGet, dotnet add package oraz Tworzenie i publikowanie pakietu NuGet.
-
{ProjectName}.csproj. Zobacz odwołanie dotnet-add.
Przesłanianie widoków, widoków częściowych i stron
Gdy widok, widok częściowy lub Razor strona zostanie znaleziony zarówno w aplikacji internetowej, jak i w liście RCL, Razor pierwszeństwo ma znacznik (.cshtml plik) w aplikacji internetowej. Na przykład dodanie WebApp1/Areas/MyFeature/Pages/Page1.cshtml do WebApp1 spowoduje, że Page1 w WebApp1 będzie mieć pierwszeństwo przed Page1 w RCL.
W przykładowym pobraniu zmień nazwę WebApp1/Areas/MyFeature2 na WebApp1/Areas/MyFeature w celu przetestowania pierwszeństwa.
Skopiuj widok częściowy RazorUIClassLib/Areas/MyFeature/Pages/Shared/_Message.cshtml do WebApp1/Areas/MyFeature/Pages/Shared/_Message.cshtml. Zaktualizuj znaczniki, aby wskazać nową lokalizację. Skompiluj i uruchom aplikację, aby sprawdzić, czy używana jest częściowa wersja aplikacji.
Jeśli RCL używa Razor Pages, włącz Razor usługi Pages i punkty końcowe w aplikacji hostującej:
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();
Układ stron RCL
Aby odwołać się do zawartości listy RCL, tak jakby była częścią folderu aplikacji Pages internetowej, utwórz projekt listy RCL z następującą strukturą plików:
RazorUIClassLib/PagesRazorUIClassLib/Pages/Shared
Załóżmy, że RazorUIClassLib/Pages/Shared zawiera dwa częściowe pliki: _Header.cshtml i _Footer.cshtml. Tagi <partial> można dodać do _Layout.cshtml pliku:
<body>
<partial name="_Header">
@RenderBody()
<partial name="_Footer">
</body>
Dodaj plik _ViewStart.cshtml do folderu projektu RCL Pages, aby użyć pliku _Layout.cshtml z aplikacji hostującej w sieci.
@{
Layout = "_Layout";
}
Utwórz RCL ze statycznymi zasobami
Biblioteka RCL może wymagać towarzyszących zasobów statycznych, do których mogą odwoływać się zarówno biblioteka RCL, jak i aplikacja korzystająca z tej biblioteki. ASP.NET Core umożliwia tworzenie bibliotek RCL, które zawierają zasoby statyczne dostępne dla aplikacji korzystającej z nich.
Aby uwzględnić zasoby towarzyszące w ramach listy RCL, utwórz wwwroot folder w bibliotece klas i uwzględnij wszystkie wymagane pliki w tym folderze.
Podczas pakowania RCL wszystkie zasoby towarzyszące w folderze wwwroot są automatycznie dołączane do pakietu.
dotnet pack Użyj polecenia, a nie wersji NuGet.exe nuget pack.
Dodawanie zasobów internetowych klienta do procesu kompilacji
Integrowanie zasobów internetowych klienta z procesem kompilacji jest nietrywialne. Aby uzyskać więcej informacji, zobacz Tworzenie zasobów internetowych klienta dla Razor biblioteki klas.
Wyklucz zasoby statyczne
Aby wykluczyć zasoby statyczne, dodaj żądaną ścieżkę wykluczenia do $(DefaultItemExcludes) grupy właściwości w pliku projektu. Oddzielaj wpisy średnikami (;).
W poniższym przykładzie arkusz stylów lib.css w folderze wwwroot nie jest traktowany jako zasób statyczny i nie jest uwzględniony w opublikowanej bibliotece RCL.
<PropertyGroup>
<DefaultItemExcludes>$(DefaultItemExcludes);wwwroot\lib.css</DefaultItemExcludes>
</PropertyGroup>
Integracja z typescript
Aby dołączyć pliki TypeScript do biblioteki RCL:
Dodaj odwołanie do pakietu NuGet
Microsoft.TypeScript.MSBuildw projekcie.Note
Aby uzyskać instrukcje dodawania pakietów do aplikacji .NET, zobacz artykuły w sekcji Instalowanie pakietów i zarządzanie nimi w temacie Przepływ pracy użycia pakietów (dokumentacja programu NuGet). Sprawdź prawidłowe wersje pakietów pod adresem NuGet.org.
Umieść pliki TypeScript (
.ts) poza folderemwwwroot. Na przykład umieść pliki w folderzeClient.Dodaj następujący znacznik do pliku projektu:
- Skonfiguruj dane wyjściowe kompilacji języka TypeScript dla folderu
wwwrootza pomocą właściwościTypescriptOutDir. - Uwzględnij cel TypeScript jako zależność celu
PrepareForBuildDependsOn. - Usuń dane wyjściowe w
wwwroot folder.
- Skonfiguruj dane wyjściowe kompilacji języka TypeScript dla folderu
<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>
Korzystanie z zawartości z zreferencjonowanej RCL
Pliki znajdujące się w folderze wwwroot RCL są widoczne dla RCL lub aplikacji używającej pod prefiksem _content/{PACKAGE ID}/. Na przykład biblioteka z nazwą zestawu Razor.Class.Lib i bez <PackageId> określonego w pliku projektu skutkuje ścieżką do zawartości statycznej pod adresem _content/Razor.Class.Lib/. Podczas tworzenia pakietu NuGet, a nazwa zestawu nie jest taka sama jak identyfikator pakietu (<PackageId> w pliku projektu biblioteki), użyj identyfikatora pakietu określonego w pliku projektu dla {PACKAGE ID}.
Aplikacja korzystająca odwołuje się do zasobów statycznych udostępnianych przez bibliotekę, używając tagów HTML takich jak <script>, <style>, <img> i innych. Aplikacja zużywająca musi mieć włączoną obsługę plików statycznych w:
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();
Podczas uruchamiania aplikacji konsumującej z danych wyjściowych kompilacji (dotnet run) statyczne zasoby internetowe są domyślnie włączone w środowisku deweloperskim. Aby obsługiwać zasoby w innych środowiskach podczas uruchamiania z wyniku kompilacji, wywołaj UseStaticWebAssets na builderze hosta w 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();
Wywołanie UseStaticWebAssets nie jest wymagane podczas uruchamiania aplikacji z opublikowanych danych wyjściowych (dotnet publish).
Przepływ rozwoju obejmujący wiele projektów
Gdy aplikacja kliencka jest uruchomiona:
- Zasoby w RCL pozostają w oryginalnych folderach. Zasoby nie są przenoszone do aplikacji odbierającej.
- Wszelkie zmiany w folderze RCL są odzwierciedlane w aplikacji korzystającej po ponownym zbudowaniu biblioteki RCL
wwwrooti bez ponownego kompilowania aplikacji korzystającej.
Podczas kompilowania listy RCL tworzony jest manifest opisujący statyczne lokalizacje zasobów internetowych. Aplikacja użytkowa odczytuje manifest w czasie wykonywania, aby korzystać z zasobów z referencyjnych projektów i pakietów. Po dodaniu nowego zasobu do listy RCL należy ponownie skompilować listę RCL, aby zaktualizować manifest, zanim aplikacja zużywająca będzie mogła uzyskać dostęp do nowego zasobu.
Publish
Po opublikowaniu aplikacji zasoby towarzyszące ze wszystkich z przywoływanych projektów i pakietów są kopiowane do folderu opublikowanej aplikacji w obszarze wwwroot. Podczas tworzenia pakietu NuGet i nazwa zestawu nie jest taka sama jak identyfikator pakietu (<PackageId> w pliku projektu biblioteki), użyj identyfikatora pakietu określonego w pliku projektu dla {PACKAGE ID} podczas badania folderu wwwroot dla opublikowanych zasobów.
Dodatkowe zasoby
Razor widoki, strony, kontrolery, modele stron, Razor składniki, składniki widoków i modele danych mogą być wbudowane w bibliotekę Razor klas (RCL). Można spakować i ponownie użyć RCL. Aplikacje mogą zawierać RCL i nadpisywać widoki oraz strony, które zawiera. Gdy widok, widok częściowy lub Razor strona zostanie znaleziony zarówno w aplikacji internetowej, jak i w liście RCL, Razor pierwszeństwo ma znacznik (.cshtml plik) w aplikacji internetowej.
Aby uzyskać informacje na temat sposobu integrowania pakietu npm i webpack z procesem Razor kompilacji biblioteki klas, zobacz Tworzenie zasobów internetowych klienta dla Razor biblioteki klas.
Tworzenie biblioteki klas zawierającej interfejs Razor użytkownika
- w programie Visual Studio
- .NET CLI (Interfejs wiersza polecenia .NET)
- W programie Visual Studio wybierz pozycję Utwórz nowy projekt.
- Wybierz Razor Bibliotekę klas>, Dalej.
- Nadaj bibliotece nazwę (na przykład "RazorClassLib"), >Utwórz. Aby uniknąć kolizji nazwy pliku z wygenerowaną biblioteką widoków, upewnij się, że nazwa biblioteki nie kończy się na .
.Views - Wybierz Strony i widoki wsparcia, jeśli potrzebujesz obsługiwać widoki. Domyślnie obsługiwane są tylko Razor strony. Wybierz Utwórz.
Szablon Razor biblioteki klas (RCL) domyślnie służy do Razor tworzenia składników. Opcja Strony i Widoki wspiera strony i widoki.
Dodaj pliki Razor do RCL.
Szablony ASP.NET Core zakładają, że zawartość listy RCL znajduje się w folderze Areas . Zobacz układ stron RCL poniżej, aby utworzyć RCL, która eksponuje zawartość ~/Pages zamiast ~/Areas/Pages.
Odwołanie do zawartości RCL
Można odwoływać się do RCL za pomocą:
- Pakiet NuGet. Zobacz Tworzenie pakietów NuGet, dotnet add package oraz Tworzenie i publikowanie pakietu NuGet.
-
{ProjectName}.csproj. Zobacz odwołanie dotnet-add.
Przesłanianie widoków, widoków częściowych i stron
Gdy widok, widok częściowy lub Razor strona zostanie znaleziony zarówno w aplikacji internetowej, jak i w liście RCL, Razor pierwszeństwo ma znacznik (.cshtml plik) w aplikacji internetowej. Na przykład dodanie WebApp1/Areas/MyFeature/Pages/Page1.cshtml do WebApp1 spowoduje, że Page1 w WebApp1 będzie mieć pierwszeństwo przed Page1 w RCL.
W przykładowym pobraniu zmień nazwę WebApp1/Areas/MyFeature2 na WebApp1/Areas/MyFeature w celu przetestowania pierwszeństwa.
Skopiuj widok częściowy RazorUIClassLib/Areas/MyFeature/Pages/Shared/_Message.cshtml do WebApp1/Areas/MyFeature/Pages/Shared/_Message.cshtml. Zaktualizuj znaczniki, aby wskazać nową lokalizację. Skompiluj i uruchom aplikację, aby sprawdzić, czy używana jest częściowa wersja aplikacji.
Jeśli RCL używa Razor Pages, włącz Razor usługi Pages i punkty końcowe w aplikacji hostującej:
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();
Układ stron RCL
Aby odwołać się do zawartości listy RCL, tak jakby była częścią folderu aplikacji Pages internetowej, utwórz projekt listy RCL z następującą strukturą plików:
RazorUIClassLib/PagesRazorUIClassLib/Pages/Shared
Załóżmy, że RazorUIClassLib/Pages/Shared zawiera dwa częściowe pliki: _Header.cshtml i _Footer.cshtml. Tagi <partial> można dodać do _Layout.cshtml pliku:
<body>
<partial name="_Header">
@RenderBody()
<partial name="_Footer">
</body>
Dodaj plik _ViewStart.cshtml do folderu projektu RCL Pages, aby użyć pliku _Layout.cshtml z aplikacji hostującej w sieci.
@{
Layout = "_Layout";
}
Utwórz RCL ze statycznymi zasobami
Biblioteka RCL może wymagać towarzyszących zasobów statycznych, do których mogą odwoływać się zarówno biblioteka RCL, jak i aplikacja korzystająca z tej biblioteki. ASP.NET Core umożliwia tworzenie bibliotek RCL, które zawierają zasoby statyczne dostępne dla aplikacji korzystającej z nich.
Aby uwzględnić zasoby towarzyszące w ramach listy RCL, utwórz wwwroot folder w bibliotece klas i uwzględnij wszystkie wymagane pliki w tym folderze.
Podczas pakowania RCL wszystkie zasoby towarzyszące w folderze wwwroot są automatycznie dołączane do pakietu.
dotnet pack Użyj polecenia, a nie wersji NuGet.exe nuget pack.
Wyklucz zasoby statyczne
Aby wykluczyć zasoby statyczne, dodaj żądaną ścieżkę wykluczenia do $(DefaultItemExcludes) grupy właściwości w pliku projektu. Oddzielaj wpisy średnikami (;).
W poniższym przykładzie arkusz stylów lib.css w folderze wwwroot nie jest traktowany jako zasób statyczny i nie jest uwzględniony w opublikowanej bibliotece RCL.
<PropertyGroup>
<DefaultItemExcludes>$(DefaultItemExcludes);wwwroot\lib.css</DefaultItemExcludes>
</PropertyGroup>
Integracja z typescript
Aby dołączyć pliki TypeScript do biblioteki RCL:
Dodaj odwołanie do pakietu NuGet
Microsoft.TypeScript.MSBuildw projekcie.Note
Aby uzyskać instrukcje dodawania pakietów do aplikacji .NET, zobacz artykuły w sekcji Instalowanie pakietów i zarządzanie nimi w temacie Przepływ pracy użycia pakietów (dokumentacja programu NuGet). Sprawdź prawidłowe wersje pakietów pod adresem NuGet.org.
Umieść pliki TypeScript (
.ts) poza folderemwwwroot. Na przykład umieść pliki w folderzeClient.Skonfiguruj dane wyjściowe kompilacji języka TypeScript dla
wwwrootfolderu. Ustaw właściwośćTypescriptOutDirwewnątrz elementuPropertyGroupw pliku projektu.<TypescriptOutDir>wwwroot</TypescriptOutDir>Dodaj cel TypeScript jako zależność celu
PrepareForBuildDependsOn, umieszczając następujący cel wewnątrzPropertyGroupw pliku projektu:<PrepareForBuildDependsOn> CompileTypeScript; GetTypeScriptOutputForPublishing;$(PrepareForBuildDependsOn) </PrepareForBuildDependsOn>
Korzystanie z zawartości z zreferencjonowanej RCL
Pliki znajdujące się w folderze wwwroot RCL są widoczne dla RCL lub aplikacji używającej pod prefiksem _content/{PACKAGE ID}/. Na przykład biblioteka z nazwą zestawu Razor.Class.Lib i bez <PackageId> określonego w pliku projektu skutkuje ścieżką do zawartości statycznej pod adresem _content/Razor.Class.Lib/. Podczas tworzenia pakietu NuGet, a nazwa zestawu nie jest taka sama jak identyfikator pakietu (<PackageId> w pliku projektu biblioteki), użyj identyfikatora pakietu określonego w pliku projektu dla {PACKAGE ID}.
Aplikacja korzystająca odwołuje się do zasobów statycznych udostępnianych przez bibliotekę, używając tagów HTML takich jak <script>, <style>, <img> i innych. Aplikacja zużywająca musi mieć włączoną obsługę plików statycznych w:
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();
Podczas uruchamiania aplikacji konsumującej z danych wyjściowych kompilacji (dotnet run) statyczne zasoby internetowe są domyślnie włączone w środowisku deweloperskim. Aby obsługiwać zasoby w innych środowiskach podczas uruchamiania z wyniku kompilacji, wywołaj UseStaticWebAssets na builderze hosta w 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();
Uwaga: platforma .NET 6 wymaga tylko wywołania metody builder.WebHost.UseWebRoot("wwwroot").UseStaticWebAssets. Aby uzyskać więcej informacji, zobacz ten problem w serwisie GitHub.
Wywołanie UseStaticWebAssets nie jest wymagane podczas uruchamiania aplikacji z opublikowanych danych wyjściowych (dotnet publish).
Przepływ rozwoju obejmujący wiele projektów
Gdy aplikacja kliencka jest uruchomiona:
- Zasoby w RCL pozostają w oryginalnych folderach. Zasoby nie są przenoszone do aplikacji odbierającej.
- Wszelkie zmiany w folderze RCL są odzwierciedlane w aplikacji korzystającej po ponownym zbudowaniu biblioteki RCL
wwwrooti bez ponownego kompilowania aplikacji korzystającej.
Podczas kompilowania listy RCL tworzony jest manifest opisujący statyczne lokalizacje zasobów internetowych. Aplikacja użytkowa odczytuje manifest w czasie wykonywania, aby korzystać z zasobów z referencyjnych projektów i pakietów. Po dodaniu nowego zasobu do listy RCL należy ponownie skompilować listę RCL, aby zaktualizować manifest, zanim aplikacja zużywająca będzie mogła uzyskać dostęp do nowego zasobu.
Publish
Po opublikowaniu aplikacji zasoby towarzyszące ze wszystkich z przywoływanych projektów i pakietów są kopiowane do folderu opublikowanej aplikacji w obszarze wwwroot. Podczas tworzenia pakietu NuGet i nazwa zestawu nie jest taka sama jak identyfikator pakietu (<PackageId> w pliku projektu biblioteki), użyj identyfikatora pakietu określonego w pliku projektu dla {PACKAGE ID} podczas badania folderu wwwroot dla opublikowanych zasobów.
Dodatkowe zasoby
Razor widoki, strony, kontrolery, modele stron, Razor składniki, składniki widoków i modele danych mogą być wbudowane w bibliotekę Razor klas (RCL). Można spakować i ponownie użyć RCL. Aplikacje mogą zawierać RCL i nadpisywać widoki oraz strony, które zawiera. Gdy widok, widok częściowy lub Razor strona zostanie znaleziony zarówno w aplikacji internetowej, jak i w liście RCL, Razor pierwszeństwo ma znacznik (.cshtml plik) w aplikacji internetowej.
Wyświetl lub pobierz przykładowy kod (jak pobrać)
Tworzenie biblioteki klas zawierającej interfejs Razor użytkownika
- w programie Visual Studio
- .NET CLI (Interfejs wiersza polecenia .NET)
- W programie Visual Studio wybierz pozycję Utwórz nowy projekt.
- Wybierz Razor Bibliotekę klas>, Dalej.
- Nadaj bibliotece nazwę (na przykład "RazorClassLib"), >Utwórz>Dalej. Aby uniknąć kolizji nazwy pliku z wygenerowaną biblioteką widoków, upewnij się, że nazwa biblioteki nie kończy się na .
.Views - Wybierz platformę docelową. Sprawdź ☑ strony i widoki wsparcia, aby zapewnić wsparcie dla widoków. Domyślnie obsługiwane są tylko Razor składniki. Wybierz Utwórz.
Szablon Razor biblioteki klas (RCL) domyślnie służy do tworzenia składników Razor. Opcja Strony i Widoki wspiera strony i widoki.
Dodaj pliki Razor do RCL.
Szablony ASP.NET Core zakładają, że zawartość listy RCL znajduje się w folderze Areas . Zobacz układ stron RCL, aby utworzyć RCL, które uwidacznia zawartość w ~/Pages zamiast ~/Areas/Pages.
Odwołanie do zawartości RCL
Można odwoływać się do RCL za pomocą:
- Pakiet NuGet. Zobacz Tworzenie pakietów NuGet, dotnet add package oraz Tworzenie i publikowanie pakietu NuGet.
-
{ProjectName}.csproj. Zobacz odwołanie dotnet-add.
Przesłanianie widoków, widoków częściowych i stron
Gdy widok, widok częściowy lub Razor strona zostanie znaleziony zarówno w aplikacji internetowej, jak i w liście RCL, Razor pierwszeństwo ma znacznik (.cshtml plik) w aplikacji internetowej. Na przykład dodanie WebApp1/Areas/MyFeature/Pages/Page1.cshtml do WebApp1 spowoduje, że Page1 w WebApp1 będzie mieć pierwszeństwo przed Page1 w RCL.
W przykładowym pobraniu zmień nazwę WebApp1/Areas/MyFeature2 na WebApp1/Areas/MyFeature w celu przetestowania pierwszeństwa.
Skopiuj widok częściowy RazorUIClassLib/Areas/MyFeature/Pages/Shared/_Message.cshtml do WebApp1/Areas/MyFeature/Pages/Shared/_Message.cshtml. Zaktualizuj znaczniki, aby wskazać nową lokalizację. Skompiluj i uruchom aplikację, aby sprawdzić, czy używana jest częściowa wersja aplikacji.
Układ stron RCL
Aby odwołać się do zawartości listy RCL, tak jakby była częścią folderu aplikacji Pages internetowej, utwórz projekt listy RCL z następującą strukturą plików:
RazorUIClassLib/PagesRazorUIClassLib/Pages/Shared
Załóżmy, że RazorUIClassLib/Pages/Shared zawiera dwa częściowe pliki: _Header.cshtml i _Footer.cshtml. Tagi <partial> można dodać do _Layout.cshtml pliku:
<body>
<partial name="_Header">
@RenderBody()
<partial name="_Footer">
</body>
Dodaj plik _ViewStart.cshtml do folderu projektu RCL Pages, aby użyć pliku _Layout.cshtml z aplikacji hostującej w sieci.
@{
Layout = "_Layout";
}
Utwórz RCL ze statycznymi zasobami
Biblioteka RCL może wymagać towarzyszących zasobów statycznych, do których mogą odwoływać się zarówno biblioteka RCL, jak i aplikacja korzystająca z tej biblioteki. ASP.NET Core umożliwia tworzenie bibliotek RCL, które zawierają zasoby statyczne dostępne dla aplikacji korzystającej z nich.
Aby uwzględnić zasoby towarzyszące w ramach listy RCL, utwórz wwwroot folder w bibliotece klas i uwzględnij wszystkie wymagane pliki w tym folderze.
Podczas pakowania RCL wszystkie zasoby towarzyszące w folderze wwwroot są automatycznie dołączane do pakietu.
dotnet pack Użyj polecenia, a nie wersji NuGet.exe nuget pack.
Wyklucz zasoby statyczne
Aby wykluczyć zasoby statyczne, dodaj żądaną ścieżkę wykluczenia do $(DefaultItemExcludes) grupy właściwości w pliku projektu. Oddzielaj wpisy średnikami (;).
W poniższym przykładzie arkusz stylów lib.css w folderze wwwroot nie jest traktowany jako zasób statyczny i nie jest uwzględniony w opublikowanej bibliotece RCL.
<PropertyGroup>
<DefaultItemExcludes>$(DefaultItemExcludes);wwwroot\lib.css</DefaultItemExcludes>
</PropertyGroup>
Integracja z typescript
Aby dołączyć pliki TypeScript do biblioteki RCL:
Dodaj odwołanie do pakietu NuGet
Microsoft.TypeScript.MSBuildw projekcie.Note
Aby uzyskać instrukcje dodawania pakietów do aplikacji .NET, zobacz artykuły w sekcji Instalowanie pakietów i zarządzanie nimi w temacie Przepływ pracy użycia pakietów (dokumentacja programu NuGet). Sprawdź prawidłowe wersje pakietów pod adresem NuGet.org.
Umieść pliki TypeScript (
.ts) poza folderemwwwroot. Na przykład umieść pliki w folderzeClient.Skonfiguruj dane wyjściowe kompilacji języka TypeScript dla
wwwrootfolderu. Ustaw właściwośćTypescriptOutDirwewnątrz elementuPropertyGroupw pliku projektu.<TypescriptOutDir>wwwroot</TypescriptOutDir>Dodaj cel TypeScript jako zależność celu
ResolveCurrentProjectStaticWebAssets, umieszczając następujący cel wewnątrzPropertyGroupw pliku projektu:<ResolveCurrentProjectStaticWebAssetsInputsDependsOn> CompileTypeScript; $(ResolveCurrentProjectStaticWebAssetsInputs) </ResolveCurrentProjectStaticWebAssetsInputsDependsOn>
Korzystanie z zawartości z zreferencjonowanej RCL
Pliki znajdujące się w folderze wwwroot RCL są widoczne dla RCL lub aplikacji używającej pod prefiksem _content/{PACKAGE ID}/. Na przykład biblioteka z nazwą zestawu Razor.Class.Lib i bez <PackageId> określonego w pliku projektu skutkuje ścieżką do zawartości statycznej pod adresem _content/Razor.Class.Lib/. Podczas tworzenia pakietu NuGet, a nazwa zestawu nie jest taka sama jak identyfikator pakietu (<PackageId> w pliku projektu biblioteki), użyj identyfikatora pakietu określonego w pliku projektu dla {PACKAGE ID}.
Aplikacja korzystająca odwołuje się do zasobów statycznych udostępnianych przez bibliotekę, używając tagów HTML takich jak <script>, <style>, <img> i innych. Aplikacja korzystająca musi mieć włączoną obsługę plików statycznych w :
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
...
app.UseStaticFiles();
...
}
Podczas uruchamiania aplikacji konsumującej z danych wyjściowych kompilacji (dotnet run) statyczne zasoby internetowe są domyślnie włączone w środowisku deweloperskim. Aby obsługiwać zasoby w innych środowiskach podczas uruchamiania z wyniku kompilacji, wywołaj UseStaticWebAssets na builderze hosta w 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>();
});
}
Wywołanie UseStaticWebAssets nie jest wymagane podczas uruchamiania aplikacji z opublikowanych danych wyjściowych (dotnet publish).
Przepływ rozwoju obejmujący wiele projektów
Gdy aplikacja kliencka jest uruchomiona:
- Zasoby w RCL pozostają w oryginalnych folderach. Zasoby nie są przenoszone do aplikacji odbierającej.
- Wszelkie zmiany w folderze RCL są odzwierciedlane w aplikacji korzystającej po ponownym zbudowaniu biblioteki RCL
wwwrooti bez ponownego kompilowania aplikacji korzystającej.
Podczas kompilowania listy RCL tworzony jest manifest opisujący statyczne lokalizacje zasobów internetowych. Aplikacja użytkowa odczytuje manifest w czasie wykonywania, aby korzystać z zasobów z referencyjnych projektów i pakietów. Po dodaniu nowego zasobu do listy RCL należy ponownie skompilować listę RCL, aby zaktualizować manifest, zanim aplikacja zużywająca będzie mogła uzyskać dostęp do nowego zasobu.
Publish
Po opublikowaniu aplikacji zasoby towarzyszące ze wszystkich z przywoływanych projektów i pakietów są kopiowane do folderu opublikowanej aplikacji w obszarze wwwroot. Podczas tworzenia pakietu NuGet i nazwa zestawu nie jest taka sama jak identyfikator pakietu (<PackageId> w pliku projektu biblioteki), użyj identyfikatora pakietu określonego w pliku projektu dla {PACKAGE ID} podczas badania folderu wwwroot dla opublikowanych zasobów.
Dodatkowe zasoby
Razor widoki, strony, kontrolery, modele stron, Razor składniki, składniki widoków i modele danych mogą być wbudowane w bibliotekę Razor klas (RCL). Można spakować i ponownie użyć RCL. Aplikacje mogą zawierać RCL i nadpisywać widoki oraz strony, które zawiera. Gdy widok, widok częściowy lub Razor strona zostanie znaleziony zarówno w aplikacji internetowej, jak i w liście RCL, Razor pierwszeństwo ma znacznik (.cshtml plik) w aplikacji internetowej.
Wyświetl lub pobierz przykładowy kod (jak pobrać)
Tworzenie biblioteki klas zawierającej interfejs Razor użytkownika
- w programie Visual Studio
- .NET CLI (Interfejs wiersza polecenia .NET)
- W menu programu Visual Studio Plik wybierz Nowy>Projekt.
- Wybierz pozycję ASP.NET Core Web Application(Podstawowa aplikacja internetowa).
- Nadaj bibliotece nazwę (na przykład "RazorClassLib"). > Aby uniknąć kolizji nazwy pliku z wygenerowaną biblioteką widoków, upewnij się, że nazwa biblioteki nie kończy się na .
.Views - Sprawdź, czy wybrano ASP.NET Core 2.1 lub nowszy.
- Wybierz Razor bibliotekę klas>OK.
RCL ma następujący plik projektu:
<Project Sdk="Microsoft.NET.Sdk.Razor">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<AddRazorSupportForMvc>true</AddRazorSupportForMvc>
</PropertyGroup>
<ItemGroup>
<FrameworkReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>
</Project>
Dodaj pliki Razor do RCL.
Szablony ASP.NET Core zakładają, że zawartość listy RCL znajduje się w folderze Areas . Zobacz układ stron RCL, aby utworzyć RCL, które uwidacznia zawartość w ~/Pages zamiast ~/Areas/Pages.
Odwołanie do zawartości RCL
Można odwoływać się do RCL za pomocą:
- Pakiet NuGet. Zobacz Tworzenie pakietów NuGet, dotnet add package oraz Tworzenie i publikowanie pakietu NuGet.
-
{ProjectName}.csproj. Zobacz odwołanie dotnet-add.
Przewodnik: tworzenie projektu RCL i używanie go z projektu Pages
Możesz pobrać kompletny projekt i przetestować go zamiast go tworzyć. Przykładowy plik do pobrania zawiera dodatkowy kod i linki, które ułatwiają testowanie projektu. Możesz zostawić opinię w tym zgłoszeniu na GitHubie z komentarzami dotyczącymi pobierania przykładów w porównaniu do instrukcji krok po kroku.
Testowanie aplikacji pobierania
Jeśli jeszcze nie pobrałeś ukończonej aplikacji i zamiast tego wolisz utworzyć projekt walkthrough, przejdź do następnej sekcji.
- w programie Visual Studio
- .NET CLI (Interfejs wiersza polecenia .NET)
.sln Otwórz plik w programie Visual Studio. Uruchom aplikację.
Postępuj zgodnie z instrukcjami w artykule Testowanie aplikacji internetowej WebApp1
Utwórz RCL
W tej sekcji tworzony jest RCL. Razor pliki są dodawane do RCL.
- w programie Visual Studio
- .NET CLI (Interfejs wiersza polecenia .NET)
Utwórz projekt RCL:
- W menu programu Visual Studio Plik wybierz Nowy>Projekt.
- Wybierz pozycję ASP.NET Core Web Application(Podstawowa aplikacja internetowa).
- Nadaj aplikacji nazwę RazorUIClassLib>OK.
- Sprawdź, czy wybrano ASP.NET Core 2.1 lub nowszy.
- Wybierz Razor bibliotekę klas>OK.
- Dodaj plik widoku częściowego Razor o nazwie
RazorUIClassLib/Areas/MyFeature/Pages/Shared/_Message.cshtml.
Dodawanie Razor plików i folderów do projektu
Zastąp znaczniki
RazorUIClassLib/Areas/MyFeature/Pages/Shared/_Message.cshtmlnastępującym kodem:<h3>_Message.cshtml partial view.</h3> <p>RazorUIClassLib\Areas\MyFeature\Pages\Shared\_Message.cshtml</p>Zastąp znaczniki
RazorUIClassLib/Areas/MyFeature/Pages/Page1.cshtmlnastępującym kodem:@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.TagHelpersjest wymagane do korzystania z widoku częściowego (<partial name="_Message" />). Zamiast dołączać dyrektywę@addTagHelper, można dodać plik_ViewImports.cshtml. Przykład:dotnet new viewimports -o RazorUIClassLib/Areas/MyFeature/PagesAby uzyskać więcej informacji na temat
_ViewImports.cshtml, zobacz Importowanie dyrektyw udostępnionychSkompiluj bibliotekę klas, aby sprawdzić, czy nie ma żadnych błędów kompilatora:
dotnet build RazorUIClassLib
Dane wyjściowe kompilacji zawierają RazorUIClassLib.dll i RazorUIClassLib.Views.dll.
RazorUIClassLib.Views.dll zawiera skompilowaną Razor zawartość.
Korzystanie z biblioteki interfejsu użytkownika Razor z projektu Razor Pages
- w programie Visual Studio
- .NET CLI (Interfejs wiersza polecenia .NET)
Utwórz aplikację Razor internetową Pages:
W Eksplorator rozwiązań kliknij prawym przyciskiem myszy rozwiązanie >Dodaj>nowy projekt.
Wybierz pozycję ASP.NET Core Web Application(Podstawowa aplikacja internetowa).
Nadaj aplikacji nazwę WebApp1.
Sprawdź, czy wybrano ASP.NET Core 2.1 lub nowszy.
Wybierz Aplikacja internetowa>OK.
W Eksplorator rozwiązań kliknij prawym przyciskiem myszy pozycję WebApp1 i wybierz polecenie Ustaw jako projekt startowy.
W Eksploratorze rozwiązań kliknij prawym przyciskiem myszy na WebApp1, a następnie wybierz Zależności kompilacji>Zależności projektu.
Sprawdź bibliotekę RazorUIClassLib jako zależność aplikacji WebApp1.
W Eksploratorze rozwiązań kliknij prawym przyciskiem myszy na WebApp1 i wybierz Dodaj>Odwołanie.
W oknie dialogowym Menedżera odwołań zaznacz RazorUIClassLib>OK.
Uruchom aplikację.
Testowanie aplikacji internetowej 1
Przejdź do /MyFeature/Page1, aby sprawdzić, czy biblioteka klas interfejsu użytkownika Razor jest używana.
Przesłanianie widoków, widoków częściowych i stron
Gdy widok, widok częściowy lub Razor strona zostanie znaleziony zarówno w aplikacji internetowej, jak i w liście RCL, Razor pierwszeństwo ma znacznik (.cshtml plik) w aplikacji internetowej. Na przykład dodanie WebApp1/Areas/MyFeature/Pages/Page1.cshtml do WebApp1 spowoduje, że Page1 w WebApp1 będzie mieć pierwszeństwo przed Page1 w RCL.
W przykładowym pobraniu zmień nazwę WebApp1/Areas/MyFeature2 na WebApp1/Areas/MyFeature w celu przetestowania pierwszeństwa.
Skopiuj widok częściowy RazorUIClassLib/Areas/MyFeature/Pages/Shared/_Message.cshtml do WebApp1/Areas/MyFeature/Pages/Shared/_Message.cshtml. Zaktualizuj znaczniki, aby wskazać nową lokalizację. Skompiluj i uruchom aplikację, aby sprawdzić, czy używana jest częściowa wersja aplikacji.
Układ stron RCL
Aby odwołać się do zawartości listy RCL, tak jakby była częścią folderu aplikacji Pages internetowej, utwórz projekt listy RCL z następującą strukturą plików:
RazorUIClassLib/PagesRazorUIClassLib/Pages/Shared
Załóżmy, że RazorUIClassLib/Pages/Shared zawiera dwa częściowe pliki: _Header.cshtml i _Footer.cshtml. Tagi <partial> można dodać do _Layout.cshtml pliku:
<body>
<partial name="_Header">
@RenderBody()
<partial name="_Footer">
</body>
Razor widoki, strony, kontrolery, modele stron, Razor składniki, składniki widoków i modele danych mogą być wbudowane w bibliotekę Razor klas (RCL). Można spakować i ponownie użyć RCL. Aplikacje mogą zawierać RCL i nadpisywać widoki oraz strony, które zawiera. Gdy widok, widok częściowy lub Razor strona zostanie znaleziony zarówno w aplikacji internetowej, jak i w liście RCL, Razor pierwszeństwo ma znacznik (.cshtml plik) w aplikacji internetowej.
Wyświetl lub pobierz przykładowy kod (jak pobrać)
Tworzenie biblioteki klas zawierającej interfejs Razor użytkownika
- w programie Visual Studio
- .NET CLI (Interfejs wiersza polecenia .NET)
- W programie Visual Studio wybierz pozycję Utwórz nowy projekt.
- Wybierz Razor Bibliotekę klas>, Dalej.
- Nadaj bibliotece nazwę (na przykład "RazorClassLib"), >Utwórz. Aby uniknąć kolizji nazwy pliku z wygenerowaną biblioteką widoków, upewnij się, że nazwa biblioteki nie kończy się na .
.Views - Wybierz Strony i widoki wsparcia, jeśli potrzebujesz obsługiwać widoki. Domyślnie obsługiwane są tylko Razor strony. Wybierz Utwórz.
Szablon Razor biblioteki klas (RCL) domyślnie służy do tworzenia składników Razor. Opcja Strony i Widoki wspiera strony i widoki.
Dodaj pliki Razor do RCL.
Szablony ASP.NET Core zakładają, że zawartość listy RCL znajduje się w folderze Areas . Zobacz układ stron RCL poniżej, aby utworzyć RCL, która eksponuje zawartość ~/Pages zamiast ~/Areas/Pages.
Odwołanie do zawartości RCL
Można odwoływać się do RCL za pomocą:
- Pakiet NuGet. Zobacz Tworzenie pakietów NuGet, dotnet add package oraz Tworzenie i publikowanie pakietu NuGet.
-
{ProjectName}.csproj. Zobacz odwołanie dotnet-add.
Przesłanianie widoków, widoków częściowych i stron
Gdy widok, widok częściowy lub Razor strona zostanie znaleziony zarówno w aplikacji internetowej, jak i w liście RCL, Razor pierwszeństwo ma znacznik (.cshtml plik) w aplikacji internetowej. Na przykład dodanie WebApp1/Areas/MyFeature/Pages/Page1.cshtml do WebApp1 spowoduje, że Page1 w WebApp1 będzie mieć pierwszeństwo przed Page1 w RCL.
W przykładowym pobraniu zmień nazwę WebApp1/Areas/MyFeature2 na WebApp1/Areas/MyFeature w celu przetestowania pierwszeństwa.
Skopiuj widok częściowy RazorUIClassLib/Areas/MyFeature/Pages/Shared/_Message.cshtml do WebApp1/Areas/MyFeature/Pages/Shared/_Message.cshtml. Zaktualizuj znaczniki, aby wskazać nową lokalizację. Skompiluj i uruchom aplikację, aby sprawdzić, czy używana jest częściowa wersja aplikacji.
Jeśli RCL używa Razor Pages, włącz Razor usługi Pages i punkty końcowe w aplikacji hostującej:
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();
});
}
Układ stron RCL
Aby odwołać się do zawartości listy RCL, tak jakby była częścią folderu aplikacji Pages internetowej, utwórz projekt listy RCL z następującą strukturą plików:
RazorUIClassLib/PagesRazorUIClassLib/Pages/Shared
Załóżmy, że RazorUIClassLib/Pages/Shared zawiera dwa częściowe pliki: _Header.cshtml i _Footer.cshtml. Tagi <partial> można dodać do _Layout.cshtml pliku:
<body>
<partial name="_Header">
@RenderBody()
<partial name="_Footer">
</body>
Dodaj plik _ViewStart.cshtml do folderu projektu RCL Pages, aby użyć pliku _Layout.cshtml z aplikacji hostującej w sieci.
@{
Layout = "_Layout";
}
Utwórz RCL ze statycznymi zasobami
Biblioteka RCL może wymagać towarzyszących zasobów statycznych, do których mogą odwoływać się zarówno biblioteka RCL, jak i aplikacja korzystająca z tej biblioteki. ASP.NET Core umożliwia tworzenie bibliotek RCL, które zawierają zasoby statyczne dostępne dla aplikacji korzystającej z nich.
Aby uwzględnić zasoby towarzyszące w ramach listy RCL, utwórz wwwroot folder w bibliotece klas i uwzględnij wszystkie wymagane pliki w tym folderze.
Podczas pakowania RCL wszystkie zasoby towarzyszące w folderze wwwroot są automatycznie dołączane do pakietu.
dotnet pack Użyj polecenia, a nie wersji NuGet.exe nuget pack.
Wyklucz zasoby statyczne
Aby wykluczyć zasoby statyczne, dodaj żądaną ścieżkę wykluczenia do $(DefaultItemExcludes) grupy właściwości w pliku projektu. Oddzielaj wpisy średnikami (;).
W poniższym przykładzie arkusz stylów lib.css w folderze wwwroot nie jest traktowany jako zasób statyczny i nie jest uwzględniony w opublikowanej bibliotece RCL.
<PropertyGroup>
<DefaultItemExcludes>$(DefaultItemExcludes);wwwroot\lib.css</DefaultItemExcludes>
</PropertyGroup>
Integracja z typescript
Aby dołączyć pliki TypeScript do biblioteki RCL:
Dodaj odwołanie do pakietu NuGet
Microsoft.TypeScript.MSBuildw projekcie.Note
Aby uzyskać instrukcje dodawania pakietów do aplikacji .NET, zobacz artykuły w sekcji Instalowanie pakietów i zarządzanie nimi w temacie Przepływ pracy użycia pakietów (dokumentacja programu NuGet). Sprawdź prawidłowe wersje pakietów pod adresem NuGet.org.
Umieść pliki TypeScript (
.ts) poza folderemwwwroot. Na przykład umieść pliki w folderzeClient.Skonfiguruj dane wyjściowe kompilacji języka TypeScript dla
wwwrootfolderu. Ustaw właściwośćTypescriptOutDirwewnątrz elementuPropertyGroupw pliku projektu.<TypescriptOutDir>wwwroot</TypescriptOutDir>Dodaj cel TypeScript jako zależność celu
ResolveCurrentProjectStaticWebAssets, umieszczając następujący cel wewnątrzPropertyGroupw pliku projektu:<ResolveCurrentProjectStaticWebAssetsInputsDependsOn> CompileTypeScript; $(ResolveCurrentProjectStaticWebAssetsInputs) </ResolveCurrentProjectStaticWebAssetsInputsDependsOn>
Korzystanie z zawartości z zreferencjonowanej RCL
Pliki znajdujące się w folderze wwwroot RCL są widoczne dla RCL lub aplikacji używającej pod prefiksem _content/{PACKAGE ID}/. Na przykład biblioteka z nazwą zestawu Razor.Class.Lib i bez <PackageId> określonego w pliku projektu skutkuje ścieżką do zawartości statycznej pod adresem _content/Razor.Class.Lib/. Podczas tworzenia pakietu NuGet, a nazwa zestawu nie jest taka sama jak identyfikator pakietu (<PackageId> w pliku projektu biblioteki), użyj identyfikatora pakietu określonego w pliku projektu dla {PACKAGE ID}.
Aplikacja korzystająca odwołuje się do zasobów statycznych udostępnianych przez bibliotekę, używając tagów HTML takich jak <script>, <style>, <img> i innych. Aplikacja korzystająca musi mieć włączoną obsługę plików statycznych w :
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
...
app.UseStaticFiles();
...
}
Podczas uruchamiania aplikacji konsumującej z danych wyjściowych kompilacji (dotnet run) statyczne zasoby internetowe są domyślnie włączone w środowisku deweloperskim. Aby obsługiwać zasoby w innych środowiskach podczas uruchamiania z wyniku kompilacji, wywołaj UseStaticWebAssets na builderze hosta w 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>();
});
}
Wywołanie UseStaticWebAssets nie jest wymagane podczas uruchamiania aplikacji z opublikowanych danych wyjściowych (dotnet publish).
Przepływ rozwoju obejmujący wiele projektów
Gdy aplikacja kliencka jest uruchomiona:
- Zasoby w RCL pozostają w oryginalnych folderach. Zasoby nie są przenoszone do aplikacji odbierającej.
- Wszelkie zmiany w folderze RCL są odzwierciedlane w aplikacji korzystającej po ponownym zbudowaniu biblioteki RCL
wwwrooti bez ponownego kompilowania aplikacji korzystającej.
Podczas kompilowania listy RCL tworzony jest manifest opisujący statyczne lokalizacje zasobów internetowych. Aplikacja użytkowa odczytuje manifest w czasie wykonywania, aby korzystać z zasobów z referencyjnych projektów i pakietów. Po dodaniu nowego zasobu do listy RCL należy ponownie skompilować listę RCL, aby zaktualizować manifest, zanim aplikacja zużywająca będzie mogła uzyskać dostęp do nowego zasobu.
Publish
Po opublikowaniu aplikacji zasoby towarzyszące ze wszystkich z przywoływanych projektów i pakietów są kopiowane do folderu opublikowanej aplikacji w obszarze wwwroot. Podczas tworzenia pakietu NuGet i nazwa zestawu nie jest taka sama jak identyfikator pakietu (<PackageId> w pliku projektu biblioteki), użyj identyfikatora pakietu określonego w pliku projektu dla {PACKAGE ID} podczas badania folderu wwwroot dla opublikowanych zasobów.