Razor ASP.NET Core'da dosya derleme
Razoruzantılı .cshtml
dosyalar, SDK kullanılarak Razor hem derleme hem de yayımlama zamanında derlenir. Çalışma zamanı derlemesi isteğe bağlı olarak projeyi yapılandırarak etkinleştirilebilir.
Not
Çalışma zamanı derlemesi:
- Uygulama bileşenleri Blazor için Razor desteklenmez.
- Genel kullanım yönergelerini desteklemez.
- Örtük kullanım yönergelerini desteklemez.
- .NET Çalışırken Yeniden Yükleme devre dışı bırakır.
- Üretim için değil geliştirme için önerilir.
Razor derleme
Dosyaların derleme zamanı ve yayımlama zamanı derlemesi Razor , SDK tarafından Razor varsayılan olarak etkinleştirilir. Çalışma zamanı derlemesi etkinleştirildiğinde derleme zamanı derlemesini tamamlar Razor ve uygulama çalışırken düzenlendiklerinde dosyaların güncelleştirilebilmesini sağlar.
Uygulama çalışırken geliştirme sırasında görünümlerin ve Sayfaların güncelleştirilmesi Razor de .NET Çalışırken Yeniden Yükleme kullanılarak desteklenir.Razor
Not
Etkinleştirildiğinde, çalışma zamanı derlemesi .NET Çalışırken Yeniden Yükleme devre dışı bırakır. Geliştirme sırasında çalışma zamanı derlemesi Razor yerine Çalışırken Yeniden Yükleme kullanmanızı öneririz.
Tüm ortamlar için çalışma zamanı derlemesini etkinleştirme
Tüm ortamlar için çalışma zamanı derlemesini etkinleştirmek için:
Microsoft.AspNetCore.Mvc'yi yükleyin.Razor. RuntimeCompilation NuGet paketi.
çağrısıAddRazorRuntimeCompilation:
Program.cs
var builder = WebApplication.CreateBuilder(args); builder.Services.AddRazorPages() .AddRazorRuntimeCompilation();
Çalışma zamanı derlemesini koşullu olarak etkinleştirme
Çalışma zamanı derlemesi koşullu olarak etkinleştirilebilir ve bu da yayımlanan çıkışın şu şekilde olmasını sağlar:
- Derlenmiş görünümleri kullanır.
- Üretimde dosya izleyicilerini etkinleştirmez.
Çalışma zamanı derlemesini yalnızca Geliştirme ortamı için etkinleştirmek için:
Microsoft.AspNetCore.Mvc'yi yükleyin.Razor. RuntimeCompilation NuGet paketi.
Program.cs
Geçerli ortam Geliştirme olarak ayarlandığında çağrısı AddRazorRuntimeCompilation yapma:var builder = WebApplication.CreateBuilder(args); var mvcBuilder = builder.Services.AddRazorPages(); if (builder.Environment.IsDevelopment()) { mvcBuilder.AddRazorRuntimeCompilation(); }
Çalışma zamanı derlemesi bir barındırma başlatma derlemesi ile de etkinleştirilebilir. Belirli başlatma profilleri için Geliştirme ortamında çalışma zamanı derlemesini etkinleştirmek için:
- Microsoft.AspNetCore.Mvc'yi yükleyin.Razor. RuntimeCompilation NuGet paketi.
- başlatma profilinin
environmentVariables
bölümünde değişikliklaunchSettings.json
yapma:değerinin
ASPNETCORE_ENVIRONMENT
olarak ayarlandığını"Development"
doğrulayın.ASPNETCORE_HOSTINGSTARTUPASSEMBLIES
seçeneğini"Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation"
olarak ayarlayın. Örneğin, aşağıdakilerlaunchSettings.json
veIIS Express
başlatma profilleri için çalışma zamanı derlemesiniViewCompilationSample
etkinleştirir:{ "iisSettings": { "windowsAuthentication": false, "anonymousAuthentication": true, "iisExpress": { "applicationUrl": "http://localhost:7098", "sslPort": 44332 } }, "profiles": { "ViewCompilationSample": { "commandName": "Project", "dotnetRunMessages": true, "launchBrowser": true, "applicationUrl": "https://localhost:7173;http://localhost:5251", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development", "ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" } }, "IIS Express": { "commandName": "IISExpress", "launchBrowser": true, "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development", "ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" } } } }
Bu yaklaşımla, içinde Program.cs
kod değişikliği gerekmez. çalışma zamanında, ASP.NET Core içinde Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
derleme düzeyinde bir HostingStartup özniteliği arar. HostingStartup
özniteliği yürütülecek uygulama başlangıç kodunu belirtir ve bu başlangıç kodu çalışma zamanı derlemesini etkinleştirir.
Sınıf kitaplığı için çalışma zamanı derlemesini Razor etkinleştirme
Pages projesinin MyClassLib adlı bir sınıf kitaplığına (RCL) başvurdığı Razor bir Razor senaryo düşünün. RCL, MVC ve Razor Pages projeleri tarafından kullanılan bir _Layout.cshtml
dosya içerir. Bu RCL'deki dosya için çalışma zamanı derlemesini _Layout.cshtml
etkinleştirmek için Sayfalar projesinde Razor aşağıdaki değişiklikleri yapın:
Çalışma zamanı derlemesini koşullu olarak etkinleştirme başlığındaki yönergelerle çalışma zamanı derlemesini etkinleştirin.
içinde
Program.cs
yapılandırınMvcRazorRuntimeCompilationOptions:var builder = WebApplication.CreateBuilder(args); builder.Services.AddRazorPages(); builder.Services.Configure<MvcRazorRuntimeCompilationOptions>(options => { var libraryPath = Path.GetFullPath( Path.Combine(builder.Environment.ContentRootPath, "..", "MyClassLib")); options.FileProviders.Add(new PhysicalFileProvider(libraryPath)); });
Yukarıdaki kod MyClassLib RCL için mutlak bir yol oluşturur. PhysicalFileProvider API'si, bu mutlak yolda dizinleri ve dosyaları bulmak için kullanılır. Son olarak örnek,
PhysicalFileProvider
RCL'nin.cshtml
dosyalarına erişim sağlayan bir dosya sağlayıcıları koleksiyonuna eklenir.
Ek kaynaklar
Razoruzantılı .cshtml
dosyalar, SDK kullanılarak Razor hem derleme hem de yayımlama zamanında derlenir. Çalışma zamanı derlemesi, projenizi yapılandırarak isteğe bağlı olarak etkinleştirilebilir.
Razor derleme
Dosyaların derleme zamanı ve yayımlama zamanı derlemesi Razor , SDK tarafından Razor varsayılan olarak etkinleştirilir. Çalışma zamanı derlemesi etkinleştirildiğinde derleme zamanı derlemesini tamamlayarak Razor dosyaların düzenlendikleri takdirde güncelleştirilebilmesini sağlar.
Proje oluşturma sırasında çalışma zamanı derlemesini etkinleştirme
Razor Sayfalar ve MVC proje şablonları, proje oluşturulduğunda çalışma zamanı derlemesini etkinleştirme seçeneği içerir. Bu seçenek ASP.NET Core 3.1 ve sonraki sürümlerde desteklenir.
Yeni ASP.NET Core web uygulaması oluştur iletişim kutusunda:
- Web Uygulaması veya Web Uygulaması (Model-Görünüm-Denetleyici) proje şablonunu seçin.
- Çalışma zamanı derlemesini etkinleştir Razor onay kutusunu seçin.
Var olan bir projede çalışma zamanı derlemesini etkinleştirme
Var olan bir projedeki tüm ortamlar için çalışma zamanı derlemesini etkinleştirmek için:
Microsoft.AspNetCore.Mvc'yi yükleyin.Razor. RuntimeCompilation NuGet paketi.
projenin
Startup.ConfigureServices
yöntemini çağrısı içerecek şekilde AddRazorRuntimeCompilationgüncelleştirin. Örneğin:public void ConfigureServices(IServiceCollection services) { services.AddRazorPages() .AddRazorRuntimeCompilation(); // code omitted for brevity }
Var olan bir projede çalışma zamanı derlemesini koşullu olarak etkinleştirme
Çalışma zamanı derlemesi, yalnızca yerel geliştirme için kullanılabilir olacak şekilde etkinleştirilebilir. Koşullu olarak bu şekilde etkinleştirme, yayımlanan çıkışın sağlanmasını sağlar:
- Derlenmiş görünümleri kullanır.
- Üretimde dosya izleyicilerini etkinleştirmez.
Çalışma zamanı derlemesini yalnızca Geliştirme ortamında etkinleştirmek için:
- Microsoft.AspNetCore.Mvc'yi yükleyin.Razor. RuntimeCompilation NuGet paketi.
- içindeki
launchSettings.json
başlatma profilienvironmentVariables
bölümünü değiştirin:- Doğrula'nın olarak
"Development"
ayarlandığını doğrulayınASPNETCORE_ENVIRONMENT
. ASPNETCORE_HOSTINGSTARTUPASSEMBLIES
seçeneğini"Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation"
olarak ayarlayın.
- Doğrula'nın olarak
Aşağıdaki örnekte, ve RazorPagesApp
başlatma profilleri için IIS Express
Geliştirme ortamında çalışma zamanı derlemesi etkinleştirilir:
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:57676",
"sslPort": 44364
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development",
"ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation"
}
},
"RazorPagesApp": {
"commandName": "Project",
"launchBrowser": true,
"applicationUrl": "https://localhost:5001;http://localhost:5000",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development",
"ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation"
}
}
}
}
Projenin Startup
sınıfında kod değişikliği gerekmez. çalışma zamanında, ASP.NET Core içinde Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
derleme düzeyinde bir HostingStartup özniteliği arar. HostingStartup
özniteliği yürütülecek uygulama başlangıç kodunu belirtir. Bu başlangıç kodu çalışma zamanı derlemesini etkinleştirir.
Sınıf kitaplığı için çalışma zamanı derlemesini Razor etkinleştirme
Pages projesinin MyClassLib adlı bir sınıf kitaplığına (RCL) başvurdığı Razor bir Razor senaryo düşünün. RCL, ekibinizin tüm MVC ve Razor Pages projelerinin tükettiği bir _Layout.cshtml
dosya içerir. Bu RCL'deki dosya için çalışma zamanı derlemesini _Layout.cshtml
etkinleştirmek istiyorsunuz. Sayfalar projesinde Razor aşağıdaki değişiklikleri yapın:
Var olan bir projede çalışma zamanı derlemesini koşullu olarak etkinleştirme başlığındaki yönergelerle çalışma zamanı derlemesini etkinleştirin.
içinde
Startup.ConfigureServices
çalışma zamanı derleme seçeneklerini yapılandırın:public void ConfigureServices(IServiceCollection services) { services.AddRazorPages(); services.Configure<MvcRazorRuntimeCompilationOptions>(options => { var libraryPath = Path.GetFullPath( Path.Combine(HostEnvironment.ContentRootPath, "..", "MyClassLib")); options.FileProviders.Add(new PhysicalFileProvider(libraryPath)); }); }
Yukarıdaki kodda MyClassLib RCL'sinin mutlak yolu oluşturulur. PhysicalFileProvider API'si, bu mutlak yolda dizinleri ve dosyaları bulmak için kullanılır. Son olarak örnek,
PhysicalFileProvider
RCL'nin.cshtml
dosyalarına erişim sağlayan bir dosya sağlayıcıları koleksiyonuna eklenir.
Ek kaynaklar
ASP.NET Core