如何升級MVC 4和Web API至MVC 5和Web API 2

MVC 5與Web API 2

ASP.NET MVC 5與Web API 2帶來需多新功能,這份教學將教各位如何升級你的MVC 4與Web API應用程式到最新版本。

升級步驟

  1. 備份你的專案。依此教學會異動的專案檔案、套件組態與web.config。
  2. 更新Web API至Web API 2。請將 Global.axax 裡的:
    WebApiConfig.Register(GlobalConfiguration.Configuration);
         

    更新為:
    GlobalConfiguration.Configure(WebApiConfig.Register);
         
  3. 確認所有套件都已相容於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
    注意:Microsoft-Web-Helpers應該先移除,然後安裝新的Microsoft.AspNet.WebHelpers。
    在主要ASP.NET套件沒有跨版本的相容性,例如,MVC 5僅與Razor 3相容,和Razor 2不相容。
  4. Visual Studio 2013開啟你的專案
  5. 移除下列ASP.NET套件(如果已安裝)。
    1. Uninstall-Package -Id Microsoft.AspNet.WebPages.Administration
    2. Uninstall-Package -Id Microsoft-Web-Helpers
    3. Uninstall-Package -Id Microsoft.AspNet.Mvc.FixedDisplayModes
  6. 升級所有套件:Update-Package

更新web.config組態檔

修改根目錄下的web.config。(不是Views目錄下的web.config)

搜尋<runtime><assemblyBinding>段落,進行以下異動:

  1. 修改name="System.Web.Mvc",更改版本號從"4.0.0.0"改為"5.0.0.0"。
  2. 修改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>
      <!-- 以下省略 -->     
        
  3. 搜尋<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>     
        
  4. 移除所有trust level段落,例如:
    <securityPolicy>
      <!--<trustLevel name="Medium"  policyFile="web_mediumtrust.config"/>-->
    </securityPolicy>     
        

異動Views目錄下的web.config組態檔

注意:如果你有使用Area(區域),必須更新每一個Area裡Views目錄下的每一個web.config。

  1. 更新所有包含"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>     
        
  2. 更新所有包含"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>     
        
  3. 如果你已經在前面步驟移除Microsoft-Web-Helpers套件,請安裝Microsoft.AspNet.WebHelpers套件:
    Install-Package -Id Microsoft.AspNet.WebHelpers

最後步驟

建置與測試MVC應用程式。

從專案檔中移除MVC 4專案GUID。

  1. 方案總管點擊專案名稱並選擇卸載專案
  2. 在專案名稱點擊並選擇編輯ProjectName.[csproj | vbproj]
  3. 搜尋ProjectTypeGuids元素並移除MVC 4專案的GUID:{E3E379DF-F4C6-4180-9B81-6769533ABE47}
  4. 儲存並關閉專案檔。
  5. 點擊專案名稱並選擇重新載入專案

沒有留言:

張貼留言

感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。