[c#] .NET Core 3.0 : Razor 뷰는 변경시 자동으로 다시 컴파일되지 않습니다.

설명서 에 따르면 Razor 뷰는 기본적으로 ASP.NET Core 3.0의 로컬 환경에서 변경시 다시 컴파일해야합니다.

그러나 내 프로젝트는 이것을 로컬에서 수행하지 않습니다. 로컬에서 디버깅 할 때보기를 변경하고 새로 고치면 변경 사항이 반영되지 않습니다. 솔루션을 중지하고 다시 실행 한 다음 변경 사항을 확인해야합니다.

Razor 페이지를 사용하여 ASP.NET Core 3.0.0 Preview 2를 사용하는 Visual Studio 2019의 기본 ASP.NET Core 웹 애플리케이션 템플릿에서이 작업을 수행하고 있습니다. 이 기능을 활성화하기 위해 설정을 변경해야하는지 아십니까?

3.0 전체 릴리스를 위해 2019 년 11 월 업데이트 :

이 질문은 여전히 ​​많은 견해를 얻고 있습니다. 추가하기 위해 몇 가지 답변이 인용되었습니다.

services.AddControllersWithViews().AddRazorRuntimeCompilation();

당신에 ConfigureServices()함수 Startup.cs, 가산 후 Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilationNuGet 패키지를. 제 경우에는 Razor Pages 만 사용하고 있으므로 AddControllersWithViews(). 대신 이것은 나를 위해 일했습니다.

services.AddRazorPages().AddRazorRuntimeCompilation();



답변

알겠습니다. 아직 지원되지 않는 것 같습니다.

런타임 컴파일이 제거됨 Roslyn에 의존하지 않도록 ASP.NET Core 공유 프레임 워크를 정리 한 결과 페이지 및보기의 런타임 컴파일에 대한 지원도이 미리보기 릴리스에서 제거되었습니다. 대신 페이지 및보기의 컴파일이 빌드시 수행됩니다. 향후 미리보기 업데이트에서는 앱에서 런타임 컴파일 지원을 선택적으로 활성화하기위한 NuGet 패키지를 제공 할 것입니다.

https://github.com/aspnet/Announcements/issues/343 에서 문제에 대한 자세한 내용을 읽을 수 있습니다.

런타임 컴파일 또는 Razor 파일 재 컴파일이 필요한 애플리케이션은 다음을 수행해야합니다.

  • Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation패키지에 대한 참조를 추가하십시오 . 3.0.0-preview3 릴리스의 일부로 사용할 수 있습니다 .
  • ConfigureServices대한 호출을 포함 하도록 애플리케이션을 업데이트합니다 AddMvcRazorRuntimeCompilation.


답변

ASP.NET Core 3 릴리스 버전의 경우 :

   services.AddControllersWithViews().AddRazorRuntimeCompilation();

https://docs.microsoft.com/en-us/aspnet/core/mvc/views/view-compilation?view=aspnetcore-3.0

링크에서 인용 한 로컬 개발에 대해서만 조건부로 활성화 할 수도 있습니다.

런타임 컴파일은 로컬 개발에만 사용할 수 있도록 활성화 할 수 있습니다. 이 방식으로 조건부로 활성화하면 게시 된 출력이 다음과 같이 보장됩니다.

컴파일 된 뷰를 사용합니다.
크기가 더 작습니다.
프로덕션에서 파일 감시자를 활성화하지 않습니다.

   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
    }


답변

ASP.NET Core3 에서 런타임 뷰 컴파일을 다시 가져 오려면

  1. 참고 Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
  2. 요구 services.AddMvc().AddRazorRuntimeCompilation()
  3. 패키지 Microsoft.VisualStudio.Web.CodeGeneration.Design에 버전 불일치가있는 경우 제거Microsoft.CodeAnalysis.Common


답변

Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation패키지를 사용하여 런타임 컴파일이 활성화 됩니다. 런타임 컴파일을 사용하려면 앱이 다음을 수행해야합니다.

  1. Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilationNuGet 패키지를 설치합니다 .

  2. Startup.ConfigureServices대한 호출을 포함 하도록 프로젝트의 메서드를 업데이트합니다 AddRazorRuntimeCompilation.

services
    .AddControllersWithViews()
    .AddRazorRuntimeCompilation();

https://docs.microsoft.com/en-us/aspnet/core/mvc/views/view-compilation?view=aspnetcore-3.0


답변

ASP.NET Core 3.1에서 런타임 Razor보기 컴파일을 다시 가져 오려면 :

  1. Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilationNuGet 패키지를 설치합니다 .
  2. Startup.ConfigureServices대한 호출을 포함 하도록 프로젝트의 메서드를 업데이트합니다 AddRazorRuntimeCompilation.
  3. services.AddRazorPages().AddRazorRuntimeCompilation();

    ASP.NET Core 3.1의 Razor 파일 컴파일


답변

1 단계 : 솔루션 용 NuGet 패키지 관리자에서 아래 패키지를 설치합니다.

Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation

2 단계 : Startup.cs 파일의 ConfigureServices에 아래 코드 추가

services.AddControllersWithViews (). AddRazorRuntimeCompilation ();

페이지를 저장 한 다음 클라이언트 브라우저를 새로 고칩니다.

Razor를 사용하는 경우 services.AddRazorPages (). AddRazorRuntimeCompilation ();에 대한 코드를 추가합니다.


답변

추가 된 참고 사항-이 런타임 컴파일을 조건부로만 활성화하여 게시 된 출력이 다음과 같이되도록 할 수 있습니다.

  • 컴파일 된 뷰를 사용합니다.
  • 크기가 더 작습니다.
  • 프로덕션에서 파일 감시자를 활성화하지 않습니다.

조건부로 런타임 컴파일 활성화