작성자 : Rick Anderson
MVC 5 및 Web API 2를 ASP.NET 특성 라우팅, 인증 필터 등을 비롯한 다양한 새로운 기능을 제공합니다. 자세한 내용은 https://www.asp.net/vnext를 참조하세요.
이 연습에서는 애플리케이션을 최신 버전으로 업그레이드하는 데 필요한 단계를 안내합니다.
참고
MVC 4 및 Web API에서 다음 버전으로의 호환성이 손상되는 변경에 대한 자세한 내용은 Visual Studio 2013 릴리스 정보 ASP.NET 및 Web Tools 참조하세요.
이 문서는 홍영준과 릭 앤더슨( @RickAndMSFT )이 작성했습니다.
업그레이드 단계
프로젝트를 백업합니다. 이 연습에서는 프로젝트 파일, 패키지 구성 및 web.config 파일을 변경해야 합니다.
Web API에서 Web API 2로 업그레이드하려면 global.asax에서 다음을 변경합니다.
WebApiConfig.Register(GlobalConfiguration.Configuration);
을
GlobalConfiguration.Configure(WebApiConfig.Register);
프로젝트에서 사용하는 모든 패키지가 MVC 5 및 Web API 2와 호환되는지 확인합니다. 다음 표에서는 변경해야 하는 것보다 MVC 4 및 Web API 관련 패키지를 보여 줍니다. 아래에 나열된 패키지 중 하나에 종속된 패키지가 있는 경우 게시자에게 문의하여 MVC 5 및 Web API 2와 호환되는 최신 버전을 다운로드하세요. 해당 패키지에 대한 소스 코드가 있는 경우 MVC 5 및 Web API 2의 새 어셈블리로 다시 컴파일해야 합니다.
패키지 ID 이전 버전 새 버전 Microsoft.AspNet.Razor 2.0.x.x 3.0.0 Microsoft.AspNet.WebPages 2.0.x.x 3.0.0 Microsoft.AspNet.WebPages.WebData 2.0.x.x 3.0.0 Microsoft.AspNet.WebPages.OAuth 2.0.x.x 3.0.0 Microsoft.AspNet.Mvc 4.0.x.x 5.0.0 Microsoft.AspNet.Mvc.Facebook 4.0.x.x 5.0.0 Microsoft.AspNet.WebApi.Core 4.0.x.x 5.0.0 Microsoft.AspNet.WebApi.SelfHost 4.0.x.x 5.0.0 Microsoft.AspNet.WebApi.Client 4.0.x.x 5.0.0 Microsoft.AspNet.WebApi.OData 4.0.x.x 5.0.0 Microsoft.AspNet.WebApi 4.0.x.x 5.0.0 Microsoft.AspNet.WebApi.WebHost 4.0.x.x 5.0.0 Microsoft.AspNet.WebApi.Tracing 4.0.x.x 5.0.0 Microsoft.AspNet.WebApi.HelpPage 4.0.x.x 5.0.0 Microsoft.net.http 2.0.x. 2.2.x. Microsoft.Data.OData 5.2.x 5.6.x System.Spatial 5.2.x 5.6.x Microsoft.Data.Edm 5.2.x 5.6.x Microsoft.AspNet.Mvc.FixedDisplayModes <o:p></o:p> 제거됨 Microsoft.AspNet.WebPages.Administration <o:p></o:p> 제거됨 Microsoft-Web-Helpers <o:p></o:p> Microsoft.AspNet.WebHelpers 참고
Microsoft-Web-Helpers가 Microsoft.AspNet.WebHelpers로 대체되었습니다. 먼저 이전 패키지를 제거한 다음 최신 패키지를 설치해야 합니다.
주요 ASP.NET 패키지 간에는 버전 간 호환성이 없습니다. 예를 들어 MVC 5는 Razor 2가 아닌 Razor 3과만 호환됩니다.
Visual Studio에서 새 프로젝트를 엽니다.
설치된 다음 ASP.NET NuGet 패키지를 제거합니다. PMC(패키지 관리자 콘솔)를 사용하여 제거합니다. PMC를 열려면 도구 메뉴를 선택한 다음 NuGet 패키지 관리자를 선택한 다음 패키지 관리자 콘솔을 선택합니다. 프로젝트에 이러한 모든 것이 포함되지 않을 수 있습니다.
Microsoft.AspNet.WebPages.Administration
이 패키지는 일반적으로 MVC 3에서 MVC 4로 업그레이드할 때 추가됩니다. 제거하려면 PMC에서 다음 명령을 실행합니다.
Uninstall-Package -Id Microsoft.AspNet.WebPages.Administration
Microsoft-Web-Helpers
이 패키지는 로Microsoft.AspNet.WebHelpers
브랜드가 변경되었습니다. 제거하려면 PMC에서 다음 명령을 실행합니다.
Uninstall-Package -Id Microsoft-Web-Helpers
Microsoft.AspNet.Mvc.FixedDisplayMode
이 패키지에는 MVC 5에서 수정된 MVC 4의 버그에 대한 해결 작업이 포함되어 있습니다. 제거하려면 PMC에서 다음 명령을 실행합니다.
Uninstall-Package -Id Microsoft.AspNet.Mvc.FixedDisplayModes
PMC를 사용하여 모든 ASP.NET NuGet 패키지를 업그레이드합니다. PMC에서 다음 명령을 실행합니다.
Update-Package
Update-Package
매개 변수가 없는 명령은 모든 패키지를 업데이트합니다. ID 인수를 사용하여 패키지를 개별적으로 업데이트할 수 있습니다. 업데이트 명령에 대한 자세한 내용은 를 실행합니다get-help update-package
.
애플리케이션 web.config 파일 업데이트
Views 폴더의 web.config 파일이 아니라 앱 web.config 파일에서 이러한 변경을 수행해야 합니다.
섹션을 <runtime>/<assemblyBinding>
찾아서 다음과 같이 변경합니다.
이름 특성이 "System.Web.Mvc"인 요소에서 버전 번호를 "4.0.0.0"에서 "5.0.0.0"으로 변경합니다. (해당 요소의 두 가지 변경 내용)
이름 특성이 "System.Web.Helpers" 및 "System.Web.WebPages"인 요소에서 버전 번호를 "2.0.0.0"에서 "3.0.0.0"으로 변경합니다. 네 가지 변경이 발생하며, 각 요소에 2개가 변경됩니다.
<runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <!--Two elements removed for Clarity --> <dependentAssembly> <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" /> <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" /> <bindingRedirect oldVersion="1.0.0.0-5.0.0.0" newVersion="5.0.0.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" /> <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" /> </dependentAssembly> <!--WebGrease element removed for Clarity --> </assemblyBinding
섹션을
<appSettings>
찾아 아래와 같이 webpages:version을 2.0.0.0에서 3.0.0.0으로 업데이트합니다.<appSettings> <add key="webpages:Version" value="3.0.0.0" /> <add key="webpages:Enabled" value="false" /> <add key="PreserveLoginUrl" value="true" /> <add key="ClientValidationEnabled" value="true" /> <add key="UnobtrusiveJavaScriptEnabled" value="true" /> </appSettings>
전체 이외의 신뢰 수준을 제거합니다. 예:
<securityPolicy> <!--<trustLevel name="Medium" policyFile="web_mediumtrust.config"/>--> </securityPolicy>
Views 폴더 아래의 web.config 파일 업데이트
애플리케이션이 영역을 사용하는 경우 각 영역 폴더의 Views 하위 폴더에 있는 각 web.config 파일을 업데이트해야 합니다.
"System.Web.Mvc"가 포함된 모든 요소를 버전 "4.0.0.0"에서 버전 "5.0.0.0"으로 업데이트합니다.
<system.web.webPages.razor> <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> <pages pageBaseType="System.Web.Mvc.WebViewPage"> <namespaces> <add namespace="System.Web.Mvc" /> <!--Elements removed for Clarity.--> </namespaces> </pages> </system.web.webPages.razor>
--> <pages validateRequest="false" pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> <controls> <add assembly="System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" /> </controls> </pages> </system.web>
"System.Web.WebPages.Razor"가 포함된 모든 요소를 버전 "2.0.0.0"에서 버전"3.0.0.0"으로 업데이트합니다. 이 섹션에 "System.Web.WebPages"가 포함된 경우 해당 요소를 버전 "2.0.0.0"에서 버전"3.0.0.0"으로 업데이트합니다.
<configuration> <configSections> <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" /> <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" /> </sectionGroup> </configSections>
이전 단계에서 NuGet 패키지를 제거한
Microsoft-Web-Helpers
경우 PMC에서 다음 명령을 사용하여 설치Microsoft.AspNet.WebHelpers
합니다.
Install-Package -Id Microsoft.AspNet.WebHelpers
앱에서 User.IsInRole() 메서드를 사용하는 경우 Web.config 파일에 다음을 추가합니다.
<system.webServer> <modules> <remove name="RoleManager" /> </modules> </system.webServer>
최종 단계
애플리케이션을 빌드하고 테스트합니다.
프로젝트 파일에서 MVC 4 프로젝트 형식 GUID를 제거합니다.
- 솔루션 탐색기 프로젝트 이름을 마우스 오른쪽 단추로 클릭한 다음 프로젝트 언로드를 선택합니다.
- 프로젝트를 마우스 오른쪽 단추로 클릭하고 ProjectName.csproj 편집을 선택합니다.
- 요소를 찾은
ProjectTypeGuids
다음 MVC 4 프로젝트 GUID 를{E3E379DF-F4C6-4180-9B81-6769533ABE47}
제거합니다. - 열려 있는 프로젝트 파일을 저장하고 닫습니다.
- 프로젝트를 마우스 오른쪽 단추로 클릭하고 프로젝트 다시 로드를 선택합니다.