MVC 5與Web API 2
ASP.NET MVC 5與Web API 2帶來需多新功能,這份教學將教各位如何升級你的MVC 4與Web API應用程式到最新版本。
升級步驟
- 備份你的專案。依此教學會異動的專案檔案、套件組態與web.config。
- 更新Web API至Web API 2。請將 Global.axax 裡的:
WebApiConfig.Register(GlobalConfiguration.Configuration);
更新為:
GlobalConfiguration.Configure(WebApiConfig.Register);
- 確認所有套件都已相容於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 Removed Microsoft.AspNet.WebPages.Administration Removed Microsoft-Web-Helpers Microsoft.AspNet.WebHelpers
在主要ASP.NET套件沒有跨版本的相容性,例如,MVC 5僅與Razor 3相容,和Razor 2不相容。 - 在Visual Studio 2013開啟你的專案
- 移除下列ASP.NET套件(如果已安裝)。
- Uninstall-Package -Id Microsoft.AspNet.WebPages.Administration
- Uninstall-Package -Id Microsoft-Web-Helpers
- Uninstall-Package -Id Microsoft.AspNet.Mvc.FixedDisplayModes
- 升級所有套件:Update-Package
更新web.config組態檔
修改根目錄下的web.config。(不是Views目錄下的web.config)
搜尋<runtime>
與<assemblyBinding>
段落,進行以下異動:
- 修改
name="System.Web.Mvc"
,更改版本號從"4.0.0.0"改為"5.0.0.0"。 - 修改
name="System.Web.Helpers"
與name="System.Web.WebPages"
,更改版本號從"2.0.0.0"改為"3.0.0.0"。
<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>
- 移除所有trust level段落,例如:
<securityPolicy> <!--<trustLevel name="Medium" policyFile="web_mediumtrust.config"/>--> </securityPolicy>
異動Views目錄下的web.config組態檔
注意:如果你有使用Area(區域),必須更新每一個Area裡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
"與"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>
- 如果你已經在前面步驟移除
Microsoft-Web-Helpers
套件,請安裝Microsoft.AspNet.WebHelpers
套件:
Install-Package -Id Microsoft.AspNet.WebHelpers
最後步驟
建置與測試MVC應用程式。
從專案檔中移除MVC 4專案GUID。
- 在方案總管點擊專案名稱並選擇卸載專案。
- 在專案名稱點擊並選擇編輯ProjectName.[csproj | vbproj]。
- 搜尋ProjectTypeGuids元素並移除MVC 4專案的GUID:
{E3E379DF-F4C6-4180-9B81-6769533ABE47}
。 - 儲存並關閉專案檔。
- 點擊專案名稱並選擇重新載入專案。
沒有留言:
張貼留言
感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。