Razordosya derlemesi ASP.NET Core
Gönderen Rick Anderson
Razor*.cshtml uzantısına sahip* dosyalar SDK kullanılarak hem derleme hem de yayımlama zamanında Razor derlenmiş. Ç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ı Razor derlemesi SDK tarafından varsayılan olarak Razor etkindir. Etkinleştirildiğinde, çalışma zamanı derlemesi derleme zamanı derlemesini tamamlar, böylece dosyalar Razor düzenleniyorsa güncelleştirilebilir.
Proje oluşturma sırasında çalışma zamanı derlemesini etkinleştirme
Sayfalar Razor ve MVC proje şablonları, proje oluşturulduğunda çalışma zamanı derlemesini etkinleştirme seçeneği içerir. Bu seçenek, 3.1 ASP.NET Core ve sonraki bir sonraki bir yıl içinde de kullanılabilir.
Yeni bir web uygulaması ASP.NET Core iletişim kutusunda:
- Web Uygulaması veya Web Uygulaması (Model-View-Controller) proje şablonunu seçin.
- Çalışma zamanı Razor derlemesini etkinleştir onay kutusunu seçin.
Mevcut projede çalışma zamanı derlemeyi etkinleştirme
Mevcut projede tüm ortamlar için çalışma zamanı derlemesini etkinleştirmek için:
Microsoft.AspNetCore.Mvc. Razor yükleyin. . RuntimeCompilation NuGet paketi.
Projesinin yöntemini çağrısı
Startup.ConfigureServicesiçerecek şekilde AddRazorRuntimeCompilation güncelleştirin. Örnek:public void ConfigureServices(IServiceCollection services) { services.AddRazorPages() .AddRazorRuntimeCompilation(); // code omitted for brevity }
Mevcut 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. Bu şekilde koşullu olarak etkinleştirilmesi, yayımlanan çıkışın:
- Derlenmiş görünümleri kullanır.
- Üretimde dosya izlemelerini etkinleştirmez.
Çalışma zamanı derlemesini yalnızca Geliştirme ortamında etkinleştirmek için:
- Microsoft.AspNetCore.Mvc. Razor yükleyin. . RuntimeCompilation NuGet paketi.
- üzerinde uygulamanın başlatma
environmentVariablesprofili launchSettings.jsdeğiştirme:- 'nin
ASPNETCORE_ENVIRONMENTolarak ayar olduğunu"Development"doğrulayın. - olarak
ASPNETCORE_HOSTINGSTARTUPASSEMBLIES"Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation"ayarlayın.
- 'nin
Aşağıdaki örnekte çalışma zamanı derlemesi, ve başlatma profilleri için Geliştirme IIS Express ortamında RazorPagesApp etkindir:
{
"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 sınıfında kod değişikliği Startup gerekmez. Çalışma zamanında, ASP.NET Core düzeyinde bir HostingStartup özniteliğini Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation arar. özniteliği, HostingStartup yürütülecek uygulama başlatma kodunu belirtir. Bu başlangıç kodu çalışma zamanı derlemesini sağlar.
Sınıf Kitaplığı için çalışma zamanı Razor derlemesini etkinleştirme
Pages projesinin Razor MyClassLib adlı bir Sınıf Razor Kitaplığına (RCL) başvuran bir senaryo düşünün. RCL, takımınız _Layout MVC ve Sayfalar projelerinin tükettiği bir _Layout.cshtml Razor dosyası içerir. Bu RCL'de _Layout.cshtml dosyası için çalışma zamanı derlemesini etkinleştirmek istediğiniz. Sayfalar projesinde aşağıdaki Razor değişiklikleri yapın:
Çalışma zamanı derlemesini mevcut projede koşullu olarak etkinleştirme yönergeleriyle etkinleştirin.
içinde çalışma zamanı derleme seçeneklerini
Startup.ConfigureServicesyapılandırma: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'ye mutlak bir yol oluşturulur. PhysicalFileProvider API'si, bu mutlak yolda dizinleri ve dosyaları bulmak için kullanılır. Son olarak
PhysicalFileProviderörnek, RCL'nin .cshtml dosyalarına erişim sağlayan bir dosya sağlayıcıları koleksiyonuna eklenir.
Ek kaynaklar
Razor*.cshtml uzantısına sahip* dosyalar SDK kullanılarak hem derleme hem de yayımlama zamanında Razor derlenmiş. Ç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ı Razor derlemesi SDK tarafından varsayılan olarak Razor etkindir. Etkinleştirildiğinde, çalışma zamanı derlemesi derleme zamanı derlemesini tamamlar, böylece dosyalar Razor düzenleniyorsa güncelleştirilebilir.
Proje oluşturma sırasında çalışma zamanı derlemesini etkinleştirme
Sayfalar Razor ve MVC proje şablonları, proje oluşturulduğunda çalışma zamanı derlemesini etkinleştirme seçeneği içerir. Bu seçenek, 3.1 ASP.NET Core ve sonraki bir sonraki bir yıl içinde de kullanılabilir.
Yeni bir web uygulaması ASP.NET Core iletişim kutusunda:
- Web Uygulaması veya Web Uygulaması (Model-View-Controller) proje şablonunu seçin.
- Çalışma zamanı Razor derlemesini etkinleştir onay kutusunu seçin.
Mevcut projede çalışma zamanı derlemeyi etkinleştirme
Mevcut projede tüm ortamlar için çalışma zamanı derlemesini etkinleştirmek için:
Microsoft.AspNetCore.Mvc. Razor yükleyin. . RuntimeCompilation NuGet paketi.
Projesinin yöntemini çağrısı
Startup.ConfigureServicesiçerecek şekilde AddRazorRuntimeCompilation güncelleştirin. Örnek:public void ConfigureServices(IServiceCollection services) { services.AddRazorPages() .AddRazorRuntimeCompilation(); // code omitted for brevity }
Mevcut 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. Bu şekilde koşullu olarak etkinleştirilmesi, yayımlanan çıkışın:
- Derlenmiş görünümleri kullanır.
- Üretimde dosya izlemelerini etkinleştirmez.
Çalışma zamanı derlemesini yalnızca Geliştirme ortamında etkinleştirmek için:
- Microsoft.AspNetCore.Mvc. Razor yükleyin. . RuntimeCompilation NuGet paketi.
- üzerinde uygulamanın başlatma
environmentVariablesprofili launchSettings.jsdeğiştirme:- 'nin
ASPNETCORE_ENVIRONMENTolarak ayar olduğunu"Development"doğrulayın. - olarak
ASPNETCORE_HOSTINGSTARTUPASSEMBLIES"Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation"ayarlayın.
- 'nin
Aşağıdaki örnekte çalışma zamanı derlemesi, ve başlatma profilleri için Geliştirme IIS Express ortamında RazorPagesApp etkindir:
{
"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 sınıfında kod değişikliği Startup gerekmez. Çalışma zamanında, ASP.NET Core düzeyinde bir HostingStartup özniteliğini Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation arar. özniteliği, HostingStartup yürütülecek uygulama başlatma kodunu belirtir. Bu başlangıç kodu çalışma zamanı derlemesini sağlar.
Sınıf Kitaplığı için çalışma zamanı Razor derlemesini etkinleştirme
Pages projesinin Razor MyClassLib adlı bir Sınıf Razor Kitaplığına (RCL) başvuran bir senaryo düşünün. RCL, takımınız _Layout MVC ve Sayfalar projelerinin tükettiği bir _Layout.cshtml Razor dosyası içerir. Bu RCL'de _Layout.cshtml dosyası için çalışma zamanı derlemesini etkinleştirmek istediğiniz. Sayfalar projesinde aşağıdaki Razor değişiklikleri yapın:
Çalışma zamanı derlemesini mevcut projede koşullu olarak etkinleştirme yönergeleriyle etkinleştirin.
içinde çalışma zamanı derleme seçeneklerini
Startup.ConfigureServicesyapılandırma: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'ye mutlak bir yol oluşturulur. PhysicalFileProvider API'si, bu mutlak yolda dizinleri ve dosyaları bulmak için kullanılır. Son olarak
PhysicalFileProviderörnek, RCL'nin .cshtml dosyalarına erişim sağlayan bir dosya sağlayıcıları koleksiyonuna eklenir.
Ek kaynaklar
İlişkili Razor Sayfa veya MVC görünümü çağrıldığında Razor çalışma zamanında bir dosya derlenmiş olur. Razordosyaları, SDK kullanılarak hem derleme hem de yayımlama zamanında Razor derlenmiş.
Razor derleme
Dosyaların derleme zamanı ve yayımlama zamanı derlemesi, Razor SDK tarafından varsayılan olarak etkindir Razor . RazorDosyalar güncelleştirildikten sonra düzenlendikten sonra derleme sırasında desteklenir. Varsayılan olarak, yalnızca derlenmiş Views.dll ve No . cshtml dosyası ya da dosyaları derlemek için gerekli derlemeler Razor bir uygulamayla dağıtılır.
Önemli
ön derleme aracı kullanım dışı bırakılmıştır ve ASP.NET Core 3,0 ' de kaldırılacak. Razor SDK'ya geçiş yapmanızı öneririz.
RazorSDK yalnızca proje dosyasında ön derleme özgü hiçbir özellik ayarlanmamışsa etkilidir. Örneğin, . csproj dosyasının MvcRazorCompileOnPublish özelliğini, true SDK 'yı devre dışı bırakmak için ayarlama Razor .
Çalışma zamanı derlemesi
Derleme zamanı derlemesi, dosyaların çalışma zamanı derlemesi tarafından takıma alınmıştır Razor . ASP.NET Core RazorBir . cshtml dosyasının içeriği değiştiğinde MVC dosyaları yeniden derleyerek.