Zgodnie z dokumentacją widoki Razor powinny domyślnie ponownie kompilować po zmianie w środowiskach lokalnych dla ASP.NET Core 3,0.
Jednak mój projekt nie robi tego lokalnie. Jeśli zmienię widok i odświeżę podczas debugowania lokalnie, zmiana nie zostanie odzwierciedlona. Muszę zatrzymać rozwiązanie, uruchomić je ponownie, a następnie zobaczyć zmianę.
Robię to na domyślnym szablonie aplikacji sieci Web ASP.NET Core w programie Visual Studio 2019 z ASP.NET Core 3.0.0 w wersji zapoznawczej 2 przy użyciu stron Razor. Masz jakiś pomysł, czy muszę zmienić ustawienia, aby włączyć tę funkcję?
AKTUALIZACJA LISTOPADA 2019 DO PEŁNEJ WYDANIA 3.0:
To pytanie wciąż ma wiele opinii. Kilka odpowiedzi zacytowano do dodania
services.AddControllersWithViews().AddRazorRuntimeCompilation();
Do ConfigureServices()
funkcji w Startup.cs
po dodaniu Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
pakietu NuGet. W moim przypadku używam tylko Razor Pages, więc nie dzwonię AddControllersWithViews()
. Zamiast tego zadziałało to dla mnie:
services.AddRazorPages().AddRazorRuntimeCompilation();
źródło
.AddRazorRuntimeCompilation();
Dziękuję!Odpowiedzi:
OK, wygląda na to, że nie jest jeszcze obsługiwany :(
Możesz przeczytać więcej na temat problemu tutaj https://github.com/aspnet/Announcements/issues/343
Aplikacje wymagające kompilacji w czasie wykonywania lub ponownej kompilacji plików Razor powinny:
Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
pakietu. Będzie dostępny jako część wersji 3.0.0-preview3 .ConfigureServices
aby zawierała wywołanieAddMvcRazorRuntimeCompilation
:źródło
AddMvcRazorRuntimeCompilation
jestAddRazorRuntimeCompilation
z ASP.Net Core 3.0 Preview 4Wersja wydania ASP.NET Core 3:
https://docs.microsoft.com/en-us/aspnet/core/mvc/views/view-compilation?view=aspnetcore-3.0
Można go również włączyć warunkowo tylko dla lokalnego rozwoju, cytowany z linku:
public Startup(IConfiguration configuration, IWebHostEnvironment env) { Configuration = configuration; Env = env; } public IWebHostEnvironment Env { get; set; } public IConfiguration Configuration { get; } public void ConfigureServices(IServiceCollection services) { IMvcBuilder builder = services.AddRazorPages(); #if DEBUG if (Env.IsDevelopment()) { builder.AddRazorRuntimeCompilation(); } #endif }
źródło
Aby odzyskać kompilację widoku środowiska uruchomieniowego w wersji
ASP.NET Core
3Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
services.AddMvc().AddRazorRuntimeCompilation()
Microsoft.VisualStudio.Web.CodeGeneration.Design
jeśli wMicrosoft.CodeAnalysis.Common
pakiecie występuje niezgodność wersjiźródło
Kompilację w czasie wykonywania można włączyć przy użyciu
Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
pakietu. Aby włączyć kompilację w czasie wykonywania, aplikacje muszą:Zainstaluj
Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
pakiet NuGet.Zaktualizuj
Startup.ConfigureServices
metodę projektu, aby zawierała wywołanieAddRazorRuntimeCompilation
:https://docs.microsoft.com/en-us/aspnet/core/mvc/views/view-compilation?view=aspnetcore-3.0
źródło
Aby odzyskać kompilację Razor Views w środowisku uruchomieniowym w ASP.NET Core 3.1:
Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
pakiet NuGet.Startup.ConfigureServices
metodę projektu, aby zawierała wywołanieAddRazorRuntimeCompilation
.services.AddRazorPages().AddRazorRuntimeCompilation()
;Kompilacja plików Razor w ASP.NET Core 3.1
źródło
Krok 1: Zainstaluj poniższy pakiet z Menedżera pakietów NuGet w celu rozwiązania.
Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
Krok 2: Dodaj poniższy kod w ConfigureServices pliku Startup.cs
services.AddControllersWithViews (). AddRazorRuntimeCompilation ();
Zapisz stronę, a następnie odśwież przeglądarkę klienta.
Jeśli używasz Razor, dodaj kod dla services.AddRazorPages (). AddRazorRuntimeCompilation ();
źródło
Tylko dodatkowa uwaga - możesz tylko warunkowo włączyć tę kompilację środowiska uruchomieniowego, aby opublikowane dane wyjściowe:
Warunkowo włącz kompilację w czasie wykonywania
źródło
W .NET Core 3.1 należy wyłączyć generowanie
views.dll
pliku.Dodaj poniższy kod do swojego
.csproj
pliku (w katalogu głównym projektu):<PropertyGroup> <TargetFramework>netcoreapp3.1</TargetFramework> <UserSecretsId>...</UserSecretsId> <!-- add from this line: --> <CopyRazorGenerateFilesToPublishDirectory>true</CopyRazorGenerateFilesToPublishDirectory> <CopyRefAssembliesToPublishDirectory>false</CopyRefAssembliesToPublishDirectory> <MvcRazorCompileOnPublish>false</MvcRazorCompileOnPublish> <RazorCompileOnBuild>false</RazorCompileOnBuild> <!-- to this line. --> </PropertyGroup>
Zainstaluj poniższy pakiet z Menedżera pakietów NuGet dla rozwiązania.
Dodaj poniższy kod do
ConfigureServices
metody swojegoStartup.cs
pliku:Lub
Lub
Następnie opublikuj ponownie i uruchom go. To będzie działać.
źródło
Najprostszym sposobem skonfigurowania kompilacji środowiska wykonawczego tylko do lokalnego programowania jest aktualizacja profili uruchamiania w
launchSettings.json
. Ta metoda nie wymaga żadnych zmian w kodzie, aby skonfigurować projekt, który działa lokalnie (nie wpłynie to na twoją produkcję).Zobacz oficjalną dokumentację :
Przykład:
{ "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" } } } }
źródło