[.NET 8] ASP.NET Core MVC 새 프로젝트 생성 시, /Views/Home/Index.cshtml 를 찾지 못하는 상황 수정

728x90
반응형

 

 

 


 

 

 

.NET 8 버전이 Preview 상태에서 장기지원 버전으로 상향됬다는 소식에, .NET 8.0 을 설치했는데요.

첫 설치 후 Visual Studio 2022에서 ASP.NET Core 웹앱 (MVC 모델) 템플릿을 이용해서 프로젝트를 생성 하고 기본적인 실행을 했는데요.

정상적으로 실행이 되지 않고, 

  • /Views/Home/Index.cshtml
  • /Views/Shared/Index.cshtml

파일을 찾지 못한다는 에러가 발생해서 원인을 찾아봤습니다. 

 

 

 

 

 

01. 프로젝트 생성, MVC 템플릿

 

.NET 8.0 을 설치 한 후, ASP.NET Core 웹앱 (Model - View - Controller) 템플릿을 이용해서 프로젝트를 생성하였습니다. 

 

 

 

 

아직은 Preview 로 보여지는거 같지만, 프레임워크 버전을 8.0 으로 선택을하고 프로젝트를 정상적으로 만들었는데요.

이후 컴파일 후 실행을 하였습니다. 

 

 

 

 

 

02. /Views/Home/Index.cshtml not found 에러 발생

 

An unhandled exception occurred while processing the request.
InvalidOperationException: The view 'Index' was not found. The following locations were searched:
/Views/Home/Index.cshtml
/Views/Shared/Index.cshtml
Microsoft.AspNetCore.Mvc.ViewEngines.ViewEngineResult.EnsureSuccessful(IEnumerable<string> originalLocations)

 

빌드 후 첫 실행을 진행했는데요. "An unhandled exception occurred while processing the request." 에러가 발생을 하였습니다.  거기다가 Index 를 찾지 못한다는 에러였는데요. 

 

설마.. 기본적으로 Razor RuntimeCompilation 이 빠진건가요;

실행은 되게끔 템플릿 구성을 해줘야 하는게 아닌지 싶었지만, 일단 오류를 잡아봅니다.

 

 

 

 

 

 

03. Razor.RuntimeCompilation Nuget 설치

해당 오류를 수정하기 위해서는 별도의 Nuget 패키지를 설치해야 하는데요. 

정확한 명칭은 아래와 같습니다.  

 

Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation

 

 

 

해당 패키지를 검색해서 설치를 진행해 줬고요. .NET 8.0 버전을 사용하고 있으니, 같은 버전으로 설치를 진행하였습니다. 

 

 

 

 

 

 

 

04. 서비스 컨테이너 부분 수정.

internal class Program
{
    private static void Main(string[] args)
    {
        var builder = WebApplication.CreateBuilder(args);

        // Add services to the container.
        builder.Services.AddControllersWithViews();

        var app = builder.Build();

        // Configure the HTTP request pipeline.
        if (!app.Environment.IsDevelopment())
        {
            app.UseExceptionHandler("/Home/Error");
            // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
            app.UseHsts();
        }

        app.UseHttpsRedirection();
        app.UseStaticFiles();

        app.UseRouting();

        app.UseAuthorization();

        app.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");

        app.Run();
    }
}

 

builder.Services.AddControllersWithViews().AddRazorRuntimeCompilation();

 

설치 후, 컨테이너 부분에 RazorRuntimeCompilation 을 추가적으로 붙여줘야 하는데요. 

위 처럼 AddControllersWithViews() 뒤에 붙여주시면 정상적으로 동작하는 것을 확인 하실 수 있습니다. 

 

 

 

Footer 에 해당하는 부분이 상단에 붙어 있는데요. 해당 부분이 왜 이런지는 추가적으로 확인해 봐야겠네요.

아직 미흡한 부분이 있는 것인지, 호환이 되지 않는 것인지 확인이 필요해 보이지만

템플릿에 해당하는 예시적인 화면이다보니, 크게 중점을 두지는 않아도 될것 같습니다. 

 

 

 

 

 

 

 

참조

https://www.reddit.com/r/dotnet/comments/14zd7zp/brand_new_default_aspnet_core_mvc_8_project/

https://learn.microsoft.com/ko-kr/aspnet/core/mvc/views/view-compilation?view=aspnetcore-8.0&tabs=visual-studio

 

 

 

 

 

 

 

END


 

 

 

 

728x90