ASP.NET Core'da sınıf kitaplığı projesini Razor kullanarak yeniden kullanılabilir kullanıcı arabirimi oluşturma
Gönderen Rick Anderson
Razor görünümler, sayfalar, denetleyiciler, sayfa modelleri, Razor bileşenler, Görünüm bileşenleri ve veri modelleri bir Razor sınıf kitaplığında (RCL) yerleşik olarak oluşturulabilir. RCL paketlenebilir ve yeniden kullanılabilir. Uygulamalar RCL'yi içerebilir ve içerdiği görünümleri ve sayfaları geçersiz kılabilir. Hem web uygulamasında hem de RCL'de bir görünüm, kısmi görünüm veya Razor Sayfa bulunduğunda, web uygulamasındaki Razor işaretleme (.cshtml
dosya) öncelikli olur.
Npm ve webpack'i RCL için derleme işlemiyle tümleştirme hakkında bilgi için bkz. Sınıf Kitaplığınız Razoriçin istemci web varlıkları oluşturma.
Kullanıcı arabirimi içeren Razor bir sınıf kitaplığı oluşturma
- Visual Studio'dan Yeni proje oluştur'u seçin.
- Sınıf Kitaplığı>İleri'yi seçin.Razor
- Kitaplığı adlandırın (örneğin, "RazorClassLib"), >Oluştur. Oluşturulan görünüm kitaplığıyla dosya adı çakışmasını önlemek için, kitaplık adının ile
.Views
bitmiyor olduğundan emin olun. - Kitaplığın sayfaları ve/veya görünümleri içermesi gerekiyorsa Destek sayfaları ve görünümleri'ni seçin. Varsayılan olarak, yalnızca Razor bileşenler desteklenir. Oluştur'u belirleyin.
Razor Sınıf Kitaplığı şablonu varsayılan olarak bileşen geliştirme olarak Razor kullanılır. Sayfaları ve görünümleri destekle seçeneği sayfaları ve görünümleri destekler. içindeki BlazorRCL desteği hakkında daha fazla bilgi için bkz. Sınıf kitaplığından Razor (RCL) ASP.NET Core Razor bileşenlerini kullanma.
RCL'ye dosya ekleyin Razor .
ASP.NET Core şablonları, RCL içeriğinin Areas
klasörde olduğunu varsayar. yerine içindeki ~/Pages
~/Areas/Pages
içeriği kullanıma sunan bir RCL oluşturmak için aşağıdaki RCL Sayfaları düzenine bakın.
RCL içeriğine başvurma
RCL'ye şu şekilde başvurabilirsiniz:
- NuGet paketi. Bkz . NuGet paketleri oluşturma ve dotnet add package ve Create and publish a NuGet package.
{ProjectName}.csproj
. Bkz. dotnet-add başvurusu.
Görünümleri, kısmi görünümleri ve sayfaları geçersiz kılma
Hem web uygulamasında hem de RCL'de bir görünüm, kısmi görünüm veya Razor Sayfa bulunduğunda, web uygulamasındaki Razor işaretleme (.cshtml
dosya) öncelikli olur. Örneğin, WebApp1'e ekleyin WebApp1/Areas/MyFeature/Pages/Page1.cshtml
ve WebApp1'deki Sayfa1, RCL'deki Sayfa1'den önceliklidir.
Örnek indirmede, önceliği test etmek için WebApp1/Areas/MyFeature
olarak yeniden adlandırınWebApp1/Areas/MyFeature2
.
RazorUIClassLib/Areas/MyFeature/Pages/Shared/_Message.cshtml
Kısmi görünümü öğesine WebApp1/Areas/MyFeature/Pages/Shared/_Message.cshtml
kopyalayın. İşaretlemeyi yeni konumu gösterecek şekilde güncelleştirin. Uygulamanın kısmi sürümünün kullanıldığını doğrulamak için uygulamayı derleyin ve çalıştırın.
RCL Pages kullanıyorsa Razor barındırma uygulamasında Pages hizmetlerini ve uç noktalarını etkinleştirin Razor :
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 Sayfaları düzeni
Web uygulamasının Pages
klasörünün bir parçası gibi RCL içeriğine başvurmak için aşağıdaki dosya yapısıyla RCL projesini oluşturun:
RazorUIClassLib/Pages
RazorUIClassLib/Pages/Shared
İki kısmi dosya içerdiğini varsayalım RazorUIClassLib/Pages/Shared
: _Header.cshtml
ve _Footer.cshtml
. Etiketler <partial>
dosyaya _Layout.cshtml
eklenebilir:
<body>
<partial name="_Header">
@RenderBody()
<partial name="_Footer">
</body>
_ViewStart.cshtml
Dosyayı konak web uygulamasından kullanmak için RCL projesinin Pages
_Layout.cshtml
klasörüne ekleyin:
@{
Layout = "_Layout";
}
Statik varlıklarla RCL oluşturma
RCL, RCL veya RCL'nin tüketen uygulaması tarafından başvurulabilen yardımcı statik varlıklar gerektirebilir. ASP.NET Core, tüketen bir uygulamanın kullanabileceği statik varlıkları içeren RCL'ler oluşturmaya olanak tanır.
Yardımcı varlıkları bir RCL'nin parçası olarak eklemek için sınıf kitaplığında bir wwwroot
klasör oluşturun ve gerekli dosyaları bu klasöre ekleyin.
RCL paketlenirken, klasördeki wwwroot
tüm yardımcı varlıklar otomatik olarak pakete eklenir.
dotnet pack
NuGet.exe sürümü nuget pack
yerine komutunu kullanın.
Derleme işlemine istemci web varlıkları ekleme
İstemci web varlıklarını derleme işlem hattıyla tümleştirmek kolay değildir. Daha fazla bilgi için bkz. Sınıf Kitaplığınız Razor için istemci web varlıkları oluşturma.
Statik varlıkları dışlama
Statik varlıkları dışlamak için, istenen dışlama yolunu proje dosyasındaki $(DefaultItemExcludes)
özellik grubuna ekleyin. Girişleri noktalı virgülle (;
) ayırın.
Aşağıdaki örnekte, lib.css
klasördeki wwwroot
stil sayfası statik varlık olarak kabul edilmez ve yayımlanan RCL'ye dahil edilmez:
<PropertyGroup>
<DefaultItemExcludes>$(DefaultItemExcludes);wwwroot\lib.css</DefaultItemExcludes>
</PropertyGroup>
Typescript tümleştirmesi
TypeScript dosyalarını RCL'ye eklemek için:
Projede
Microsoft.TypeScript.MSBuild
NuGet paketine başvurun.Not
.NET uygulamalarına paket ekleme hakkında yönergeler için, Paket tüketimi iş akışında (NuGet belgeleri) paketleri yüklemek ve yönetmek altındaki makalelere bakın. NuGet.org'da doğru paket sürümlerini onaylayın.
TypeScript dosyalarını (
.ts
) klasörün dışınawwwroot
yerleştirin. Örneğin, dosyaları birClient
klasöre yerleştirin.Klasörün TypeScript derleme çıkışını
wwwroot
yapılandırın.TypescriptOutDir
Proje dosyasında içindeki özelliğiniPropertyGroup
ayarlayın:<TypescriptOutDir>wwwroot</TypescriptOutDir>
Proje dosyasına aşağıdaki hedefi ekleyerek TypeScript hedefini
PropertyGroup
hedefinPrepareForBuildDependsOn
bağımlılığı olarak ekleyin:<PrepareForBuildDependsOn> CompileTypeScript; GetTypeScriptOutputForPublishing;$(PrepareForBuildDependsOn) </PrepareForBuildDependsOn>
Başvuruda bulunan RCL'den içerik kullanma
RCL klasöründe yer wwwroot
alan dosyalar RCL'ye veya ön ekinin _content/{PACKAGE ID}/
altındaki tüketen uygulamaya sunulur. Örneğin, derleme adına Razor.Class.Lib
sahip ve proje dosyasında belirtilmemiş bir <PackageId>
kitaplık, konumundaki _content/Razor.Class.Lib/
statik içeriğe giden bir yola neden olur. NuGet paketi oluştururken ve derleme adı paket kimliğiyle aynı olmadığında (<PackageId>
kitaplığın proje dosyasında), için {PACKAGE ID}
proje dosyasında belirtilen paket kimliğini kullanın.
Tüketen uygulama, kitaplık tarafından sağlanan statik varlıklara , <style>
, <img>
ve diğer HTML etiketleriyle <script>
başvurur. Tüketen uygulamanın şu durumlarda statik dosya desteği etkinleştirilmelidir:
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();
Kullanan uygulamayı derleme çıkışından ()dotnet run
çalıştırırken, geliştirme ortamında statik web varlıkları varsayılan olarak etkinleştirilir. Derleme çıkışından çalışırken diğer ortamlardaki varlıkları desteklemek için içindeki konak oluşturucusunu Program.cs
çağırınUseStaticWebAssets:
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();
Yayımlanan çıkıştan (dotnet publish
) bir uygulama çalıştırılırken çağrı UseStaticWebAssets
yapılması gerekmez.
Çok projeli geliştirme akışı
Tüketen uygulama çalıştırıldığında:
- RCL'deki varlıklar özgün klasörlerinde kalır. Varlıklar, tüketen uygulamaya taşınmaz.
- RCL'nin
wwwroot
klasöründeki tüm değişiklikler, RCL yeniden derlendikten sonra ve kullanan uygulamayı yeniden oluşturmadan tüketen uygulamaya yansıtılır.
RCL oluşturulduğunda, statik web varlığı konumlarını açıklayan bir bildirim oluşturulur. Kullanan uygulama, başvuruda bulunan proje ve paketlerdeki varlıkları kullanmak için çalışma zamanında bildirimi okur. RCL'ye yeni bir varlık eklendiğinde, tüketen bir uygulamanın yeni varlığa erişebilmesi için önce RCL'nin bildirimini güncelleştirmek için yeniden oluşturulması gerekir.
Yayımlama
Uygulama yayımlandığında, başvuruda bulunan tüm projelerin ve paketlerin wwwroot
yardımcı varlıkları, altında _content/{PACKAGE ID}/
yayımlanan uygulamanın klasörüne kopyalanır. NuGet paketi oluştururken ve derleme adı paket kimliğiyle (<PackageId>
kitaplığın proje dosyasında) aynı değilse, yayımlanan varlıkların klasörünü incelerken wwwroot
için proje dosyasında {PACKAGE ID}
belirtilen paket kimliğini kullanın.
Ek kaynaklar
Razor görünümler, sayfalar, denetleyiciler, sayfa modelleri, Razor bileşenler, Görünüm bileşenleri ve veri modelleri bir Razor sınıf kitaplığında (RCL) yerleşik olarak oluşturulabilir. RCL paketlenebilir ve yeniden kullanılabilir. Uygulamalar RCL'yi içerebilir ve içerdiği görünümleri ve sayfaları geçersiz kılabilir. Hem web uygulamasında hem de RCL'de bir görünüm, kısmi görünüm veya Razor Sayfa bulunduğunda, web uygulamasındaki Razor işaretleme (.cshtml
dosya) öncelikli olur.
Npm ve webpack'i bir Razor Sınıf Kitaplığı için derleme işlemiyle tümleştirme hakkında bilgi için bkz. Sınıf Kitaplığınız Razoriçin istemci web varlıkları oluşturma.
Kullanıcı arabirimi içeren Razor bir sınıf kitaplığı oluşturma
- Visual Studio'dan Yeni proje oluştur'u seçin.
- Sınıf Kitaplığı>İleri'yi seçin.Razor
- Kitaplığı adlandırın (örneğin, "RazorClassLib"), >Oluştur. Oluşturulan görünüm kitaplığıyla dosya adı çakışmasını önlemek için, kitaplık adının ile
.Views
bitmiyor olduğundan emin olun. - Görünümleri desteklemeniz gerekiyorsa Destek sayfaları ve görünümleri'ne tıklayın. Varsayılan olarak, yalnızca Razor Sayfalar desteklenir. Oluştur'u belirleyin.
Razor Sınıf Kitaplığı (RCL) şablonu varsayılan olarak bileşen geliştirme olarak Razor kullanılır. Sayfaları ve görünümleri destekle seçeneği sayfaları ve görünümleri destekler.
RCL'ye dosya ekleyin Razor .
ASP.NET Core şablonları, RCL içeriğinin Areas
klasörde olduğunu varsayar. yerine içindeki ~/Pages
~/Areas/Pages
içeriği kullanıma sunan bir RCL oluşturmak için aşağıdaki RCL Sayfaları düzenine bakın.
RCL içeriğine başvurma
RCL'ye şu şekilde başvurabilirsiniz:
- NuGet paketi. Bkz . NuGet paketleri oluşturma ve dotnet add package ve Create and publish a NuGet package.
{ProjectName}.csproj
. Bkz. dotnet-add başvurusu.
Görünümleri, kısmi görünümleri ve sayfaları geçersiz kılma
Hem web uygulamasında hem de RCL'de bir görünüm, kısmi görünüm veya Razor Sayfa bulunduğunda, web uygulamasındaki Razor işaretleme (.cshtml
dosya) öncelikli olur. Örneğin, WebApp1'e ekleyin WebApp1/Areas/MyFeature/Pages/Page1.cshtml
ve WebApp1'deki Sayfa1, RCL'deki Sayfa1'den önceliklidir.
Örnek indirmede, önceliği test etmek için WebApp1/Areas/MyFeature
olarak yeniden adlandırınWebApp1/Areas/MyFeature2
.
RazorUIClassLib/Areas/MyFeature/Pages/Shared/_Message.cshtml
Kısmi görünümü öğesine WebApp1/Areas/MyFeature/Pages/Shared/_Message.cshtml
kopyalayın. İşaretlemeyi yeni konumu gösterecek şekilde güncelleştirin. Uygulamanın kısmi sürümünün kullanıldığını doğrulamak için uygulamayı derleyin ve çalıştırın.
RCL Pages kullanıyorsa Razor barındırma uygulamasında Pages hizmetlerini ve uç noktalarını etkinleştirin Razor :
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 Sayfaları düzeni
Web uygulamasının Pages
klasörünün bir parçası gibi RCL içeriğine başvurmak için aşağıdaki dosya yapısıyla RCL projesini oluşturun:
RazorUIClassLib/Pages
RazorUIClassLib/Pages/Shared
İki kısmi dosya içerdiğini varsayalım RazorUIClassLib/Pages/Shared
: _Header.cshtml
ve _Footer.cshtml
. Etiketler <partial>
dosyaya _Layout.cshtml
eklenebilir:
<body>
<partial name="_Header">
@RenderBody()
<partial name="_Footer">
</body>
_ViewStart.cshtml
Dosyayı konak web uygulamasından kullanmak için RCL projesinin Pages
_Layout.cshtml
klasörüne ekleyin:
@{
Layout = "_Layout";
}
Statik varlıklarla RCL oluşturma
RCL, RCL veya RCL'nin tüketen uygulaması tarafından başvurulabilen yardımcı statik varlıklar gerektirebilir. ASP.NET Core, tüketen bir uygulamanın kullanabileceği statik varlıkları içeren RCL'ler oluşturmaya olanak tanır.
Yardımcı varlıkları bir RCL'nin parçası olarak eklemek için sınıf kitaplığında bir wwwroot
klasör oluşturun ve gerekli dosyaları bu klasöre ekleyin.
RCL paketlenirken, klasördeki wwwroot
tüm yardımcı varlıklar otomatik olarak pakete eklenir.
dotnet pack
NuGet.exe sürümü nuget pack
yerine komutunu kullanın.
Statik varlıkları dışlama
Statik varlıkları dışlamak için, istenen dışlama yolunu proje dosyasındaki $(DefaultItemExcludes)
özellik grubuna ekleyin. Girişleri noktalı virgülle (;
) ayırın.
Aşağıdaki örnekte, lib.css
klasördeki wwwroot
stil sayfası statik varlık olarak kabul edilmez ve yayımlanan RCL'ye dahil edilmez:
<PropertyGroup>
<DefaultItemExcludes>$(DefaultItemExcludes);wwwroot\lib.css</DefaultItemExcludes>
</PropertyGroup>
Typescript tümleştirmesi
TypeScript dosyalarını RCL'ye eklemek için:
Projede
Microsoft.TypeScript.MSBuild
NuGet paketine başvurun.Not
.NET uygulamalarına paket ekleme hakkında yönergeler için, Paket tüketimi iş akışında (NuGet belgeleri) paketleri yüklemek ve yönetmek altındaki makalelere bakın. NuGet.org'da doğru paket sürümlerini onaylayın.
TypeScript dosyalarını (
.ts
) klasörün dışınawwwroot
yerleştirin. Örneğin, dosyaları birClient
klasöre yerleştirin.Klasörün TypeScript derleme çıkışını
wwwroot
yapılandırın.TypescriptOutDir
Proje dosyasında içindeki özelliğiniPropertyGroup
ayarlayın:<TypescriptOutDir>wwwroot</TypescriptOutDir>
Proje dosyasına aşağıdaki hedefi ekleyerek TypeScript hedefini
PropertyGroup
hedefinPrepareForBuildDependsOn
bağımlılığı olarak ekleyin:<PrepareForBuildDependsOn> CompileTypeScript; GetTypeScriptOutputForPublishing;$(PrepareForBuildDependsOn) </PrepareForBuildDependsOn>
Başvuruda bulunan RCL'den içerik kullanma
RCL klasöründe yer wwwroot
alan dosyalar RCL'ye veya ön ekinin _content/{PACKAGE ID}/
altındaki tüketen uygulamaya sunulur. Örneğin, derleme adına Razor.Class.Lib
sahip ve proje dosyasında belirtilmemiş bir <PackageId>
kitaplık, konumundaki _content/Razor.Class.Lib/
statik içeriğe giden bir yola neden olur. NuGet paketi oluştururken ve derleme adı paket kimliğiyle aynı olmadığında (<PackageId>
kitaplığın proje dosyasında), için {PACKAGE ID}
proje dosyasında belirtilen paket kimliğini kullanın.
Tüketen uygulama, kitaplık tarafından sağlanan statik varlıklara , <style>
, <img>
ve diğer HTML etiketleriyle <script>
başvurur. Tüketen uygulamanın şu durumlarda statik dosya desteği etkinleştirilmelidir:
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();
Kullanan uygulamayı derleme çıkışından ()dotnet run
çalıştırırken, geliştirme ortamında statik web varlıkları varsayılan olarak etkinleştirilir. Derleme çıkışından çalışırken diğer ortamlardaki varlıkları desteklemek için içindeki konak oluşturucusunu Program.cs
çağırınUseStaticWebAssets:
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();
Not: .NET 6 yalnızca çağrısı builder.WebHost.UseWebRoot("wwwroot").UseStaticWebAssets
gerektirir. Daha fazla bilgi için bu GitHub konusuna bakın.
Yayımlanan çıkıştan (dotnet publish
) bir uygulama çalıştırılırken çağrı UseStaticWebAssets
yapılması gerekmez.
Çok projeli geliştirme akışı
Tüketen uygulama çalıştırıldığında:
- RCL'deki varlıklar özgün klasörlerinde kalır. Varlıklar, tüketen uygulamaya taşınmaz.
- RCL'nin
wwwroot
klasöründeki tüm değişiklikler, RCL yeniden derlendikten sonra ve kullanan uygulamayı yeniden oluşturmadan tüketen uygulamaya yansıtılır.
RCL oluşturulduğunda, statik web varlığı konumlarını açıklayan bir bildirim oluşturulur. Kullanan uygulama, başvuruda bulunan proje ve paketlerdeki varlıkları kullanmak için çalışma zamanında bildirimi okur. RCL'ye yeni bir varlık eklendiğinde, tüketen bir uygulamanın yeni varlığa erişebilmesi için önce RCL'nin bildirimini güncelleştirmek için yeniden oluşturulması gerekir.
Yayımlama
Uygulama yayımlandığında, başvuruda bulunan tüm projelerin ve paketlerin wwwroot
yardımcı varlıkları, altında _content/{PACKAGE ID}/
yayımlanan uygulamanın klasörüne kopyalanır. NuGet paketi oluştururken ve derleme adı paket kimliğiyle (<PackageId>
kitaplığın proje dosyasında) aynı değilse, yayımlanan varlıkların klasörünü incelerken wwwroot
için proje dosyasında {PACKAGE ID}
belirtilen paket kimliğini kullanın.
Ek kaynaklar
Razor görünümler, sayfalar, denetleyiciler, sayfa modelleri, Razor bileşenler, Görünüm bileşenleri ve veri modelleri bir Razor sınıf kitaplığında (RCL) yerleşik olarak oluşturulabilir. RCL paketlenebilir ve yeniden kullanılabilir. Uygulamalar RCL'yi içerebilir ve içerdiği görünümleri ve sayfaları geçersiz kılabilir. Hem web uygulamasında hem de RCL'de bir görünüm, kısmi görünüm veya Razor Sayfa bulunduğunda, web uygulamasındaki Razor işaretleme (.cshtml
dosya) öncelikli olur.
Örnek kodu görüntüleme veya indirme (indirme)
Kullanıcı arabirimi içeren Razor bir sınıf kitaplığı oluşturma
- Visual Studio'dan Yeni proje oluştur'u seçin.
- Sınıf Kitaplığı>İleri'yi seçin.Razor
- Kitaplığı adlandırın (örneğin, "RazorClassLib"), >İleri Oluştur'u seçin>. Oluşturulan görünüm kitaplığıyla dosya adı çakışmasını önlemek için, kitaplık adının ile
.Views
bitmiyor olduğundan emin olun. - Hedef Çerçeve'yi seçin. Destek görünümlerini desteklemek için Destek sayfalarını ve görünümlerini denetleyin ☑. Varsayılan olarak, yalnızca Razor bileşenler desteklenir. Oluştur'u belirleyin.
Sınıf Razor kitaplığı (RCL) şablonu varsayılan olarak bileşen geliştirme olarak Razor kullanılır. Sayfaları ve görünümleri destekle seçeneği sayfaları ve görünümleri destekler.
RCL'ye dosya ekleyin Razor .
ASP.NET Core şablonları, RCL içeriğinin Areas
klasörde olduğunu varsayar. yerine içeriğini ~/Areas/Pages
~/Pages
kullanıma sunan bir RCL oluşturmak için bkz. RCL Sayfaları düzeni.
RCL içeriğine başvurma
RCL'ye şu şekilde başvurabilirsiniz:
- NuGet paketi. Bkz . NuGet paketleri oluşturma ve dotnet add package ve Create and publish a NuGet package.
{ProjectName}.csproj
. Bkz. dotnet-add başvurusu.
Görünümleri, kısmi görünümleri ve sayfaları geçersiz kılma
Hem web uygulamasında hem de RCL'de bir görünüm, kısmi görünüm veya Razor Sayfa bulunduğunda, web uygulamasındaki Razor işaretleme (.cshtml
dosya) öncelikli olur. Örneğin, WebApp1'e ekleyin WebApp1/Areas/MyFeature/Pages/Page1.cshtml
ve WebApp1'deki Sayfa1, RCL'deki Sayfa1'den önceliklidir.
Örnek indirmede, önceliği test etmek için WebApp1/Areas/MyFeature
olarak yeniden adlandırınWebApp1/Areas/MyFeature2
.
RazorUIClassLib/Areas/MyFeature/Pages/Shared/_Message.cshtml
Kısmi görünümü öğesine WebApp1/Areas/MyFeature/Pages/Shared/_Message.cshtml
kopyalayın. İşaretlemeyi yeni konumu gösterecek şekilde güncelleştirin. Uygulamanın kısmi sürümünün kullanıldığını doğrulamak için uygulamayı derleyin ve çalıştırın.
RCL Sayfaları düzeni
Web uygulamasının Pages
klasörünün bir parçası gibi RCL içeriğine başvurmak için aşağıdaki dosya yapısıyla RCL projesini oluşturun:
RazorUIClassLib/Pages
RazorUIClassLib/Pages/Shared
İki kısmi dosya içerdiğini varsayalım RazorUIClassLib/Pages/Shared
: _Header.cshtml
ve _Footer.cshtml
. Etiketler <partial>
dosyaya _Layout.cshtml
eklenebilir:
<body>
<partial name="_Header">
@RenderBody()
<partial name="_Footer">
</body>
_ViewStart.cshtml
Dosyayı konak web uygulamasından kullanmak için RCL projesinin Pages
_Layout.cshtml
klasörüne ekleyin:
@{
Layout = "_Layout";
}
Statik varlıklarla RCL oluşturma
RCL, RCL veya RCL'nin tüketen uygulaması tarafından başvurulabilen yardımcı statik varlıklar gerektirebilir. ASP.NET Core, tüketen bir uygulamanın kullanabileceği statik varlıkları içeren RCL'ler oluşturmaya olanak tanır.
Yardımcı varlıkları bir RCL'nin parçası olarak eklemek için sınıf kitaplığında bir wwwroot
klasör oluşturun ve gerekli dosyaları bu klasöre ekleyin.
RCL paketlenirken, klasördeki wwwroot
tüm yardımcı varlıklar otomatik olarak pakete eklenir.
dotnet pack
NuGet.exe sürümü nuget pack
yerine komutunu kullanın.
Statik varlıkları dışlama
Statik varlıkları dışlamak için, istenen dışlama yolunu proje dosyasındaki $(DefaultItemExcludes)
özellik grubuna ekleyin. Girişleri noktalı virgülle (;
) ayırın.
Aşağıdaki örnekte, lib.css
klasördeki wwwroot
stil sayfası statik varlık olarak kabul edilmez ve yayımlanan RCL'ye dahil edilmez:
<PropertyGroup>
<DefaultItemExcludes>$(DefaultItemExcludes);wwwroot\lib.css</DefaultItemExcludes>
</PropertyGroup>
Typescript tümleştirmesi
TypeScript dosyalarını RCL'ye eklemek için:
Projede
Microsoft.TypeScript.MSBuild
NuGet paketine başvurun.Not
.NET uygulamalarına paket ekleme hakkında yönergeler için, Paket tüketimi iş akışında (NuGet belgeleri) paketleri yüklemek ve yönetmek altındaki makalelere bakın. NuGet.org'da doğru paket sürümlerini onaylayın.
TypeScript dosyalarını (
.ts
) klasörün dışınawwwroot
yerleştirin. Örneğin, dosyaları birClient
klasöre yerleştirin.Klasörün TypeScript derleme çıkışını
wwwroot
yapılandırın.TypescriptOutDir
Proje dosyasında içindeki özelliğiniPropertyGroup
ayarlayın:<TypescriptOutDir>wwwroot</TypescriptOutDir>
Proje dosyasına aşağıdaki hedefi ekleyerek TypeScript hedefini
PropertyGroup
hedefinResolveCurrentProjectStaticWebAssets
bağımlılığı olarak ekleyin:<ResolveCurrentProjectStaticWebAssetsInputsDependsOn> CompileTypeScript; $(ResolveCurrentProjectStaticWebAssetsInputs) </ResolveCurrentProjectStaticWebAssetsInputsDependsOn>
Başvuruda bulunan RCL'den içerik kullanma
RCL klasöründe yer wwwroot
alan dosyalar RCL'ye veya ön ekinin _content/{PACKAGE ID}/
altındaki tüketen uygulamaya sunulur. Örneğin, derleme adına Razor.Class.Lib
sahip ve proje dosyasında belirtilmemiş bir <PackageId>
kitaplık, konumundaki _content/Razor.Class.Lib/
statik içeriğe giden bir yola neden olur. NuGet paketi oluştururken ve derleme adı paket kimliğiyle aynı olmadığında (<PackageId>
kitaplığın proje dosyasında), için {PACKAGE ID}
proje dosyasında belirtilen paket kimliğini kullanın.
Tüketen uygulama, kitaplık tarafından sağlanan statik varlıklara , <style>
, <img>
ve diğer HTML etiketleriyle <script>
başvurur. Tüketen uygulamanın içinde Startup.Configure
statik dosya desteği etkinleştirilmelidir:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
...
app.UseStaticFiles();
...
}
Kullanan uygulamayı derleme çıkışından ()dotnet run
çalıştırırken, geliştirme ortamında statik web varlıkları varsayılan olarak etkinleştirilir. Derleme çıkışından çalışırken diğer ortamlardaki varlıkları desteklemek için içindeki konak oluşturucusunu Program.cs
çağırınUseStaticWebAssets
:
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>();
});
}
Yayımlanan çıkıştan (dotnet publish
) bir uygulama çalıştırılırken çağrı UseStaticWebAssets
yapılması gerekmez.
Çok projeli geliştirme akışı
Tüketen uygulama çalıştırıldığında:
- RCL'deki varlıklar özgün klasörlerinde kalır. Varlıklar, tüketen uygulamaya taşınmaz.
- RCL'nin
wwwroot
klasöründeki tüm değişiklikler, RCL yeniden derlendikten sonra ve kullanan uygulamayı yeniden oluşturmadan tüketen uygulamaya yansıtılır.
RCL oluşturulduğunda, statik web varlığı konumlarını açıklayan bir bildirim oluşturulur. Kullanan uygulama, başvuruda bulunan proje ve paketlerdeki varlıkları kullanmak için çalışma zamanında bildirimi okur. RCL'ye yeni bir varlık eklendiğinde, tüketen bir uygulamanın yeni varlığa erişebilmesi için önce RCL'nin bildirimini güncelleştirmek için yeniden oluşturulması gerekir.
Yayımlama
Uygulama yayımlandığında, başvuruda bulunan tüm projelerin ve paketlerin wwwroot
yardımcı varlıkları, altında _content/{PACKAGE ID}/
yayımlanan uygulamanın klasörüne kopyalanır. NuGet paketi oluştururken ve derleme adı paket kimliğiyle (<PackageId>
kitaplığın proje dosyasında) aynı değilse, yayımlanan varlıkların klasörünü incelerken wwwroot
için proje dosyasında {PACKAGE ID}
belirtilen paket kimliğini kullanın.
Ek kaynaklar
Razor görünümler, sayfalar, denetleyiciler, sayfa modelleri, Razor bileşenler, Görünüm bileşenleri ve veri modelleri bir Razor sınıf kitaplığında (RCL) yerleşik olarak oluşturulabilir. RCL paketlenebilir ve yeniden kullanılabilir. Uygulamalar RCL'yi içerebilir ve içerdiği görünümleri ve sayfaları geçersiz kılabilir. Hem web uygulamasında hem de RCL'de bir görünüm, kısmi görünüm veya Razor Sayfa bulunduğunda, web uygulamasındaki Razor işaretleme (.cshtml
dosya) öncelikli olur.
Örnek kodu görüntüleme veya indirme (indirme)
Kullanıcı arabirimi içeren Razor bir sınıf kitaplığı oluşturma
- Visual Studio Dosya menüsünden Yeni Proje'yi> seçin.
- ASP.NET Çekirdek Web Uygulaması'nı seçin.
- Kitaplığı adlandırın (örneğin, "RazorClassLib") >Tamam. Oluşturulan görünüm kitaplığıyla dosya adı çakışmasını önlemek için, kitaplık adının ile
.Views
bitmiyor olduğundan emin olun. - ASP.NET Core 2.1 veya sonraki bir sürümün seçili olduğunu doğrulayın.
- Sınıf Kitaplığı>Tamam'ı seçin.Razor
RCL'de aşağıdaki proje dosyası vardır:
<Project Sdk="Microsoft.NET.Sdk.Razor">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<AddRazorSupportForMvc>true</AddRazorSupportForMvc>
</PropertyGroup>
<ItemGroup>
<FrameworkReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>
</Project>
RCL'ye dosya ekleyin Razor .
ASP.NET Core şablonları, RCL içeriğinin Areas
klasörde olduğunu varsayar. yerine içeriğini ~/Areas/Pages
~/Pages
kullanıma sunan bir RCL oluşturmak için bkz. RCL Sayfaları düzeni.
RCL içeriğine başvurma
RCL'ye şu şekilde başvurabilirsiniz:
- NuGet paketi. Bkz . NuGet paketleri oluşturma ve dotnet add package ve Create and publish a NuGet package.
{ProjectName}.csproj
. Bkz. dotnet-add başvurusu.
İzlenecek yol: Bir RCL projesi oluşturma ve Pages projesinden Razor kullanma
Projenin tamamını indirebilir ve oluşturmak yerine test edebilirsiniz. Örnek indirme, projenin testini kolaylaştıran ek kod ve bağlantılar içerir. Bu GitHub sorununa, indirme örnekleri ve adım adım yönergeler hakkındaki yorumlarınızla ilgili geri bildirim bırakabilirsiniz.
İndirme uygulamasını test edin
Tamamlanmış uygulamayı indirmediyseniz ve izlenecek yol projesini oluşturmayı tercih ediyorsanız sonraki bölüme geçin.
.sln
Dosyayı Visual Studio'da açın. Uygulamayı çalıştırma.
Test WebApp1'deki yönergeleri izleyin
RCL oluşturma
Bu bölümde bir RCL oluşturulur. Razor dosyaları RCL'ye eklenir.
RCL projesini oluşturun:
- Visual Studio Dosya menüsünden Yeni Proje'yi> seçin.
- ASP.NET Çekirdek Web Uygulaması'nı seçin.
- Uygulamaya RazorUIClassLib>Ok adını verin.
- ASP.NET Core 2.1 veya sonraki bir sürümün seçili olduğunu doğrulayın.
- Sınıf Kitaplığı>Tamam'ı seçin.Razor
- adlı
RazorUIClassLib/Areas/MyFeature/Pages/Shared/_Message.cshtml
kısmi bir Razor görünüm dosyası ekleyin.
Projeye dosya ve klasör ekleme Razor
içindeki
RazorUIClassLib/Areas/MyFeature/Pages/Shared/_Message.cshtml
işaretlemesini aşağıdaki kodla değiştirin:<h3>_Message.cshtml partial view.</h3> <p>RazorUIClassLib\Areas\MyFeature\Pages\Shared\_Message.cshtml</p>
içindeki
RazorUIClassLib/Areas/MyFeature/Pages/Page1.cshtml
işaretlemesini aşağıdaki kodla değiştirin:@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
kısmi görünümü (<partial name="_Message" />
) kullanmak için gereklidir. yönergesini@addTagHelper
eklemek yerine bir_ViewImports.cshtml
dosya ekleyebilirsiniz. Örneğin:dotnet new viewimports -o RazorUIClassLib/Areas/MyFeature/Pages
hakkında
_ViewImports.cshtml
daha fazla bilgi için bkz. Paylaşılan Yönergeleri İçeri AktarmaDerleyici hatası olmadığını doğrulamak için sınıf kitaplığını oluşturun:
dotnet build RazorUIClassLib
Derleme çıkışı ve RazorUIClassLib.Views.dll
içerirRazorUIClassLib.dll
. RazorUIClassLib.Views.dll
derlenmiş Razor içeriği içerir.
Pages projesinden Razor Razor kullanıcı arabirimi kitaplığını kullanma
Razor Sayfalar web uygulamasını oluşturun:
Çözüm Gezgini çözüme sağ tıklayarak Yeni Proje Ekle'ye >>tıklayın.
ASP.NET Çekirdek Web Uygulaması'nı seçin.
Uygulamaya WebApp1 adını verin.
ASP.NET Core 2.1 veya sonraki bir sürümün seçili olduğunu doğrulayın.
Web Uygulaması>Tamam'ı seçin.
Çözüm Gezgini WebApp1'e sağ tıklayın ve Başlangıç Projesi Olarak Ayarla'yı seçin.
Çözüm Gezgini WebApp1'e sağ tıklayın ve Bağımlılıkları Oluştur Proje Bağımlılıkları'na> tıklayın.
RazorUIClassLib'i WebApp1 bağımlılığı olarak denetleyin.
Çözüm Gezgini WebApp1'e sağ tıklayın ve Başvuru Ekle'yi>seçin.
Başvuru Yöneticisi iletişim kutusunda RazorUIClassLib>Tamam'ı işaretleyin.
Uygulamayı çalıştırma.
WebApp1'i test edin
/MyFeature/Page1
Kullanıcı arabirimi sınıf kitaplığının Razor kullanımda olduğunu doğrulamak için adresine gidin.
Görünümleri, kısmi görünümleri ve sayfaları geçersiz kılma
Hem web uygulamasında hem de RCL'de bir görünüm, kısmi görünüm veya Razor Sayfa bulunduğunda, web uygulamasındaki Razor işaretleme (.cshtml
dosya) öncelikli olur. Örneğin, WebApp1'e ekleyin WebApp1/Areas/MyFeature/Pages/Page1.cshtml
ve WebApp1'deki Sayfa1, RCL'deki Sayfa1'den önceliklidir.
Örnek indirmede, önceliği test etmek için WebApp1/Areas/MyFeature
olarak yeniden adlandırınWebApp1/Areas/MyFeature2
.
RazorUIClassLib/Areas/MyFeature/Pages/Shared/_Message.cshtml
Kısmi görünümü öğesine WebApp1/Areas/MyFeature/Pages/Shared/_Message.cshtml
kopyalayın. İşaretlemeyi yeni konumu gösterecek şekilde güncelleştirin. Uygulamanın kısmi sürümünün kullanıldığını doğrulamak için uygulamayı derleyin ve çalıştırın.
RCL Sayfaları düzeni
Web uygulamasının Pages
klasörünün bir parçası gibi RCL içeriğine başvurmak için aşağıdaki dosya yapısıyla RCL projesini oluşturun:
RazorUIClassLib/Pages
RazorUIClassLib/Pages/Shared
İki kısmi dosya içerdiğini varsayalım RazorUIClassLib/Pages/Shared
: _Header.cshtml
ve _Footer.cshtml
. Etiketler <partial>
dosyaya _Layout.cshtml
eklenebilir:
<body>
<partial name="_Header">
@RenderBody()
<partial name="_Footer">
</body>
Razor görünümler, sayfalar, denetleyiciler, sayfa modelleri, Razor bileşenler, Görünüm bileşenleri ve veri modelleri bir Razor sınıf kitaplığında (RCL) yerleşik olarak oluşturulabilir. RCL paketlenebilir ve yeniden kullanılabilir. Uygulamalar RCL'yi içerebilir ve içerdiği görünümleri ve sayfaları geçersiz kılabilir. Hem web uygulamasında hem de RCL'de bir görünüm, kısmi görünüm veya Razor Sayfa bulunduğunda, web uygulamasındaki Razor işaretleme (.cshtml
dosya) öncelikli olur.
Örnek kodu görüntüleme veya indirme (indirme)
Kullanıcı arabirimi içeren Razor bir sınıf kitaplığı oluşturma
- Visual Studio'dan Yeni proje oluştur'u seçin.
- Sınıf Kitaplığı>İleri'yi seçin.Razor
- Kitaplığı adlandırın (örneğin, "RazorClassLib"), >Oluştur. Oluşturulan görünüm kitaplığıyla dosya adı çakışmasını önlemek için, kitaplık adının ile
.Views
bitmiyor olduğundan emin olun. - Görünümleri desteklemeniz gerekiyorsa Destek sayfaları ve görünümleri'ne tıklayın. Varsayılan olarak, yalnızca Razor Sayfalar desteklenir. Oluştur'u belirleyin.
Sınıf Razor kitaplığı (RCL) şablonu varsayılan olarak bileşen geliştirme olarak Razor kullanılır. Sayfaları ve görünümleri destekle seçeneği sayfaları ve görünümleri destekler.
RCL'ye dosya ekleyin Razor .
ASP.NET Core şablonları, RCL içeriğinin Areas
klasörde olduğunu varsayar. yerine içindeki ~/Pages
~/Areas/Pages
içeriği kullanıma sunan bir RCL oluşturmak için aşağıdaki RCL Sayfaları düzenine bakın.
RCL içeriğine başvurma
RCL'ye şu şekilde başvurabilirsiniz:
- NuGet paketi. Bkz . NuGet paketleri oluşturma ve dotnet add package ve Create and publish a NuGet package.
{ProjectName}.csproj
. Bkz. dotnet-add başvurusu.
Görünümleri, kısmi görünümleri ve sayfaları geçersiz kılma
Hem web uygulamasında hem de RCL'de bir görünüm, kısmi görünüm veya Razor Sayfa bulunduğunda, web uygulamasındaki Razor işaretleme (.cshtml
dosya) öncelikli olur. Örneğin, WebApp1'e ekleyin WebApp1/Areas/MyFeature/Pages/Page1.cshtml
ve WebApp1'deki Sayfa1, RCL'deki Sayfa1'den önceliklidir.
Örnek indirmede, önceliği test etmek için WebApp1/Areas/MyFeature
olarak yeniden adlandırınWebApp1/Areas/MyFeature2
.
RazorUIClassLib/Areas/MyFeature/Pages/Shared/_Message.cshtml
Kısmi görünümü öğesine WebApp1/Areas/MyFeature/Pages/Shared/_Message.cshtml
kopyalayın. İşaretlemeyi yeni konumu gösterecek şekilde güncelleştirin. Uygulamanın kısmi sürümünün kullanıldığını doğrulamak için uygulamayı derleyin ve çalıştırın.
RCL Pages kullanıyorsa Razor barındırma uygulamasında Pages hizmetlerini ve uç noktalarını etkinleştirin Razor :
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 Sayfaları düzeni
Web uygulamasının Pages
klasörünün bir parçası gibi RCL içeriğine başvurmak için aşağıdaki dosya yapısıyla RCL projesini oluşturun:
RazorUIClassLib/Pages
RazorUIClassLib/Pages/Shared
İki kısmi dosya içerdiğini varsayalım RazorUIClassLib/Pages/Shared
: _Header.cshtml
ve _Footer.cshtml
. Etiketler <partial>
dosyaya _Layout.cshtml
eklenebilir:
<body>
<partial name="_Header">
@RenderBody()
<partial name="_Footer">
</body>
_ViewStart.cshtml
Dosyayı konak web uygulamasından kullanmak için RCL projesinin Pages
_Layout.cshtml
klasörüne ekleyin:
@{
Layout = "_Layout";
}
Statik varlıklarla RCL oluşturma
RCL, RCL veya RCL'nin tüketen uygulaması tarafından başvurulabilen yardımcı statik varlıklar gerektirebilir. ASP.NET Core, tüketen bir uygulamanın kullanabileceği statik varlıkları içeren RCL'ler oluşturmaya olanak tanır.
Yardımcı varlıkları bir RCL'nin parçası olarak eklemek için sınıf kitaplığında bir wwwroot
klasör oluşturun ve gerekli dosyaları bu klasöre ekleyin.
RCL paketlenirken, klasördeki wwwroot
tüm yardımcı varlıklar otomatik olarak pakete eklenir.
dotnet pack
NuGet.exe sürümü nuget pack
yerine komutunu kullanın.
Statik varlıkları dışlama
Statik varlıkları dışlamak için, istenen dışlama yolunu proje dosyasındaki $(DefaultItemExcludes)
özellik grubuna ekleyin. Girişleri noktalı virgülle (;
) ayırın.
Aşağıdaki örnekte, lib.css
klasördeki wwwroot
stil sayfası statik varlık olarak kabul edilmez ve yayımlanan RCL'ye dahil edilmez:
<PropertyGroup>
<DefaultItemExcludes>$(DefaultItemExcludes);wwwroot\lib.css</DefaultItemExcludes>
</PropertyGroup>
Typescript tümleştirmesi
TypeScript dosyalarını RCL'ye eklemek için:
Projede
Microsoft.TypeScript.MSBuild
NuGet paketine başvurun.Not
.NET uygulamalarına paket ekleme hakkında yönergeler için, Paket tüketimi iş akışında (NuGet belgeleri) paketleri yüklemek ve yönetmek altındaki makalelere bakın. NuGet.org'da doğru paket sürümlerini onaylayın.
TypeScript dosyalarını (
.ts
) klasörün dışınawwwroot
yerleştirin. Örneğin, dosyaları birClient
klasöre yerleştirin.Klasörün TypeScript derleme çıkışını
wwwroot
yapılandırın.TypescriptOutDir
Proje dosyasında içindeki özelliğiniPropertyGroup
ayarlayın:<TypescriptOutDir>wwwroot</TypescriptOutDir>
Proje dosyasına aşağıdaki hedefi ekleyerek TypeScript hedefini
PropertyGroup
hedefinResolveCurrentProjectStaticWebAssets
bağımlılığı olarak ekleyin:<ResolveCurrentProjectStaticWebAssetsInputsDependsOn> CompileTypeScript; $(ResolveCurrentProjectStaticWebAssetsInputs) </ResolveCurrentProjectStaticWebAssetsInputsDependsOn>
Başvuruda bulunan RCL'den içerik kullanma
RCL klasöründe yer wwwroot
alan dosyalar RCL'ye veya ön ekinin _content/{PACKAGE ID}/
altındaki tüketen uygulamaya sunulur. Örneğin, derleme adına Razor.Class.Lib
sahip ve proje dosyasında belirtilmemiş bir <PackageId>
kitaplık, konumundaki _content/Razor.Class.Lib/
statik içeriğe giden bir yola neden olur. NuGet paketi oluştururken ve derleme adı paket kimliğiyle aynı olmadığında (<PackageId>
kitaplığın proje dosyasında), için {PACKAGE ID}
proje dosyasında belirtilen paket kimliğini kullanın.
Tüketen uygulama, kitaplık tarafından sağlanan statik varlıklara , <style>
, <img>
ve diğer HTML etiketleriyle <script>
başvurur. Tüketen uygulamanın içinde Startup.Configure
statik dosya desteği etkinleştirilmelidir:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
...
app.UseStaticFiles();
...
}
Kullanan uygulamayı derleme çıkışından ()dotnet run
çalıştırırken, geliştirme ortamında statik web varlıkları varsayılan olarak etkinleştirilir. Derleme çıkışından çalışırken diğer ortamlardaki varlıkları desteklemek için içindeki konak oluşturucusunu Program.cs
çağırınUseStaticWebAssets
:
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>();
});
}
Yayımlanan çıkıştan (dotnet publish
) bir uygulama çalıştırılırken çağrı UseStaticWebAssets
yapılması gerekmez.
Çok projeli geliştirme akışı
Tüketen uygulama çalıştırıldığında:
- RCL'deki varlıklar özgün klasörlerinde kalır. Varlıklar, tüketen uygulamaya taşınmaz.
- RCL'nin
wwwroot
klasöründeki tüm değişiklikler, RCL yeniden derlendikten sonra ve kullanan uygulamayı yeniden oluşturmadan tüketen uygulamaya yansıtılır.
RCL oluşturulduğunda, statik web varlığı konumlarını açıklayan bir bildirim oluşturulur. Kullanan uygulama, başvuruda bulunan proje ve paketlerdeki varlıkları kullanmak için çalışma zamanında bildirimi okur. RCL'ye yeni bir varlık eklendiğinde, tüketen bir uygulamanın yeni varlığa erişebilmesi için önce RCL'nin bildirimini güncelleştirmek için yeniden oluşturulması gerekir.
Yayımlama
Uygulama yayımlandığında, başvuruda bulunan tüm projelerin ve paketlerin wwwroot
yardımcı varlıkları, altında _content/{PACKAGE ID}/
yayımlanan uygulamanın klasörüne kopyalanır. NuGet paketi oluştururken ve derleme adı paket kimliğiyle (<PackageId>
kitaplığın proje dosyasında) aynı değilse, yayımlanan varlıkların klasörünü incelerken wwwroot
için proje dosyasında {PACKAGE ID}
belirtilen paket kimliğini kullanın.
Ek kaynaklar
ASP.NET Core