Tworzę .NET Core MVC w najnowszej wersji 2.2. Mam problem, gdy wprowadzam zmiany w pliku CSHTML i odświeżam stronę, moje zmiany nie są odzwierciedlane w przeglądarce. Muszę ponownie uruchomić projekt, aby zobaczyć moje zmiany. Dzieje się to już od jakiegoś czasu, więc nie jestem pewien, jaka zmiana spowodowała ten problem.
Próbowałem używać funkcji „Opróżnij pamięć podręczną i ponowne załadowanie” w Chrome, a także innych przeglądarek bezskutecznie. Dzieje się tak w systemach Windows i Mac przy użyciu Visual Studio dla komputerów Mac i VS Code
W domyślnym projekcie .Net Core działa dobrze, więc coś w moim projekcie musi się zmienić po drodze. Zastanawiam się, od czego mam zacząć, aby debugować ten problem? Próbowałem wykomentować prawie wszystko w moim Startup.cs
i Program.cs
bez rozdzielczości.
Odpowiedzi:
Wygląda na to, że wprowadzono zmianę w ASP.NET Core 2.2 (i nie mogę znaleźć żadnych ogłoszeń dotyczących tej zmiany). Jeśli nie jesteś jawnie uruchomiony w środowisku „programistycznym”, widoki Razor są kompilowane i nie zobaczysz żadnych zmian wprowadzonych w pliku .cshtml
Możesz jednak wyłączyć to za pomocą niektórych konfiguracji w klasie startowej w następujący sposób.
ASP.NET dla rdzenia 3,0 i wyższa, patrz Alexander Christov za odpowiedź .
źródło
MissingMethodException: Method not found: 'Microsoft.Cci.IMethodReference Microsoft.Cci.ICustomAttribute.Constructor(Microsoft.CodeAnalysis.Emit.EmitContext)'. Microsoft.CodeAnalysis.CSharp.Symbol.Microsoft.CodeAnalysis.ISymbol.GetAttributes()
Masz pojęcie, co oznacza ten wyjątek? Wszystkie pozostałe strony ładują się poprawnie. Dopiero gdyservices.AddMvc().AddRazorOptions(options => options.AllowRecompilingViewsOnFileChange = _env.IsEnvironment("MyEnvironment"));
W ASP.NET 3.0 i wyższe podstawowej ,
RazorViewEngineOptions.AllowRecompilingViewsOnFileChange
nie jest dostępna.Zaskoczony, że odświeżenie widoku podczas działania aplikacji nie zadziałało, odkryłem następujące rozwiązanie:
Dodaj następujące informacje
Startup.cs
:services.AddControllersWithViews (). AddRazorRuntimeCompilation () ;
Oto pełne wyjaśnienie ciekawskich ...
HTH
źródło
Właśnie utworzyłem nowy projekt przy użyciu najnowszego szablonu ASP.NET MVC Core 3.1 i zmieniłem następujące elementy, aby włączyć rekompilację środowiska uruchomieniowego do debugowania:
Odwołanie pakietu NuGet - Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation .
Startup.cs - ConfigureServices (IServiceCollection services) WAS:
TERAZ:
źródło
Powinieneś po prostu dodać to:
do metody ConfigureService .
Należy pamiętać, że poniższy kod nie jest dostępny w ASP.NET Core 3.1:
źródło
Poniżej pomogło mi, gdy widoki były w oddzielnym projekcie.
źródło
Korzystając z uruchomionej aplikacji .net core 2.2 z poleceniem,
dotnet watch run
projekt jest restartowany po każdej zmianieźródło
Udało mi się rozwiązać ten problem w Rider, dodając
ASPNETCORE_ENVIRONMENT=Development
zmienną środowiskową.źródło
Dla tych, którzy używają Net core 3.0 lub nowszego
Przejdź do Narzędzia → Menedżer pakietów NuGet → Zarządzaj pakietami NuGet w celu znalezienia rozwiązania
przejdź do zakładki przeglądania, aby przeglądać z internetu
wyszukaj RuntimeCompilation Kliknij Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
zainstaluj na swoich projektach aktualną stabilną wersję
otwórz plik Startup.cs
przejdź do metody void ConfigureServices
dodaj linię:
services.AddControllersWithViews().AddRazorRuntimeCompilation();
jesteś ZROBIONE
Uruchom ponownie i zobacz. Teraz możesz odświeżyć swoje widoki lub strony.
źródło
Czy jesteś absolutnie pewien, że używasz wersji 2.2? Sprawdź swój csproj, ponieważ może to być ten błąd https://github.com/aspnet/Razor/issues/2466 Możesz spróbować wyłączyć
RazorCompileOnBuild
więcej informacji https://docs.microsoft.com/en-us/aspnet/core/razor -pages / sdk? view = aspnetcore-2.1 # propertiesźródło
Istnieją dwa sposoby rozwiązania tego problemu:
1 . Sprawdź uprawnienia folderu, w którym znajduje się plik .sln. Może wystąpić problem z uprawnieniami dostępu do plików, ponieważ program Visual Studio może nie uzyskiwać dostępu do plików, gdy działa serwer ekspresowy IIS, więc za każdym razem, gdy trzeba będzie odzwierciedlić nowe zmiany .cshtml zrestartuj serwer, więc sugeruję edycję uprawnień dostępu do folderów poprzez:
Kliknij prawym przyciskiem myszy folder-> właściwości-> bezpieczeństwo-> kliknij przycisk edycji -> zaznacz wszystkie opcje-> zapisz .
Uruchom ponownie program Visual Studio, aby zobaczyć zmiany.
Jeśli to nie zadziała, użyj opcji 2.
2. W swoim projekcie w pliku startup.cs dodaj poniższy wiersz ConfigureServices () w metodzie:
źródło