[asp.net-core] 변경 후 .NET Core MVC 페이지가 새로 고쳐지지 않음

최신 버전 2.2에서 .NET Core MVC를 빌드하고 있습니다. CSHTML 파일을 변경하고 페이지를 새로 고칠 때 문제가 있습니다. 변경 사항이 브라우저에 반영되지 않습니다. 변경 사항을 확인하려면 프로젝트를 다시 시작해야합니다. 이것은 한동안 일어나고 있으므로 어떤 변경으로 인해이 문제가 발생했는지 정확히 모르겠습니다.

나는 크롬의 “Empty Cache and Hard Reload”와 다른 브라우저를 사용해 보았습니다. 이것은 Mac 용 Visual Studio와 VS Code를 모두 사용하는 Windows 및 Mac에서 발생합니다.

기본 .Net Core 프로젝트에서는 제대로 작동하므로 내 프로젝트에서 변경된 내용이어야합니다. 이 문제를 디버깅하려면 어디서부터 시작해야하는지 궁금합니다. 내 거의 모든 주석 해봤 Startup.csProgram.cs어떤 해상도를.



답변

ASP.NET Core 2.2에서 변경된 사항이있는 것 같습니다 (이 변경 사항에 대한 공지를 찾을 수 없습니다). ‘개발’환경에서 명시 적으로 실행하지 않는 경우 Razor 뷰가 컴파일되고 .cshtml에 대한 변경 사항이 표시되지 않습니다.

그러나 다음과 같이 Startup 클래스의 일부 구성을 사용하여이 기능을 끌 수 있습니다.

services.AddMvc().AddRazorOptions(options => options.AllowRecompilingViewsOnFileChange = true);

ASP.NET Core 3.0 이상에 대해서는 Alexander Christov의 답변을 참조하십시오 .


답변

에서 ASP.NET 코어 3.0 이상 , RazorViewEngineOptions.AllowRecompilingViewsOnFileChange사용할 수 없습니다.

앱이 실행되는 동안보기를 새로 고침해도 작동하지 않는다는 사실에 놀랐습니다. 다음 솔루션을 발견했습니다.

  1. 프로젝트에 Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation NuGet 패키지 추가
  2. 에 다음을 추가하십시오 Startup.cs.

    services.AddControllersWithViews (). AddRazorRuntimeCompilation () ;

호기심에 대한 전체 설명 은 다음과 같습니다 .

HTH


답변

방금 최신 ASP.NET MVC Core 3.1 템플릿을 사용하여 새 프로젝트를 만들었고 디버그에 대해 런타임 재 컴파일을 활성화하기 위해 다음을 변경했습니다.

참조 NuGet 패키지 -Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation .

Startup.cs-ConfigureServices (IServiceCollection 서비스) WAS :

// stuff...

services.AddControllersWithViews();

// more stuff...

지금:

// stuff...

var mvcBuilder = services.AddControllersWithViews();

#if DEBUG
    mvcBuilder.AddRazorRuntimeCompilation();
#endif

// more stuff...


답변

다음을 추가해야합니다.

services.AddControllersWithViews();

받는 ConfigureService의 방법.

아래 코드는 ASP.NET Core 3.1에서 사용할 수 없습니다.

services.AddControllersWithViews().AddRazorRuntimeCompilation();


답변

아래는 뷰가 별도의 프로젝트에있을 때 도움이되었습니다.

if(HostingEnvironment.IsDevelopment()){ // only in development (optional)
    services.AddMvc().AddRazorOptions(o => {
        o.FileProviders.Add(new PhysicalFileProvider(PATH_TO_PROJECT));
    });
}


답변

.net core 2.2 실행 앱을 명령과 함께 사용하면 dotnet watch run변경 될 때마다 프로젝트가 다시 시작됩니다.


답변

Rider에서 ASPNETCORE_ENVIRONMENT=Development환경 변수 를 추가하여이 문제를 해결할 수있었습니다 .