2023. 11. 10. 15:30

클래스 라이브러리를 만들어 'Microsoft.AspNetCore.Mvc'에 있는 'ControllerBase'를 사용하려면 누겟(NuGet)에서  'Microsoft.AspNetCore.Mvc'를 받으면 됩니다.

 

그래서 누겟을 봤더니.....

허....헐??

 

 

1. 'Microsoft.AspNetCore.Mvc'는 빠졌다!

하도 옛날에 만들어 놓고 복붙만 해서 쓰던 프로젝트라 '사용되지 않음'상태가 되어 있었는지 이제 알았네요.

대충 레거시 프로젝트들 누겟에서 뺀다는 소리...

 

 

 

2. 'Microsoft.AspNetCore.Mvc'는 어디 갔는가?

정확하게는 누겟에서만 빠지는 거고 SDK에는 들어 있기 때문에 쓰는 데 지장은 없습니다.

 

 

2-1. 프로젝트의 기준 SDK를 변경하여 해결하는 방법

프로젝트가 자체를 ASP.NET Core로 바꿔도 되는 경우라면 프로젝트 파일(*.csproj)의 SDK 항목을 다음과 같이 바꿔줍니다.

(참고 : MS Learn - Q&A - Why is there not a Microsoft.AspNetCore.Mvc.ViewFeatures, Version 6.0.0.0 in NuGet? )

<Project Sdk="Microsoft.NET.Sdk.Web">

 

 

2-2. SDK를 변경하지 않고 해결하는 방법

SDK에서 해당 항목만 참조할 거라면 프로젝트 파일(*.csproj)에 아이템 그룹을 추가해 줍니다.

(참고 : stackoverflow - How to install Microsoft.AspNetCore.Mvc.Core with version 3.1.0 from NuGet? - Ramil Aliyev 007님 답변 )

<ItemGroup>
    <FrameworkReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>

 

비주얼 스튜디오에서 다음과 같이 확인할 수 있습니다.

 

 

3. 확인

이제 에러 없이 참조할 수 있습니다.

 

 

마무리

이런 것들은 SDK로 통합되는 게 맞다고 보는 입장이라 환영할 만하긴 한데......

SDK 기능도 UI에서 참조할 수 있게 해줘야 하는 게 아닌가 싶은데 말이죠.