Compartilhar via


Como atualizar um projeto do ASP.NET MVC 4 e API Web para o ASP.NET MVC 5 e API Web 2

por Rick Anderson

ASP.NET MVC 5 e a API Web 2 trazem uma série de novos recursos, incluindo roteamento de atributos, filtros de autenticação e muito mais. Consulte https://www.asp.net/vnext para obter mais detalhes.

Este passo a passo orientará você com as etapas necessárias para atualizar seu aplicativo para a versão mais recente.

Observação

Consulte ASP.NET and Web Tools para Visual Studio 2013 Notas de Versão para obter informações sobre alterações interruptivas do MVC 4 e da API Web para a próxima versão.

Este artigo foi escrito por Youngjune Hong e Rick Anderson ( @RickAndMSFT )

Etapas de atualização

  1. Faça backup do projeto. Este passo a passo exigirá que você faça alterações no arquivo de projeto, na configuração do pacote e nos arquivos de web.config.

  2. Para atualizar da API Web para a API Web 2, em global.asax, altere:

    WebApiConfig.Register(GlobalConfiguration.Configuration);
    

    como

    GlobalConfiguration.Configure(WebApiConfig.Register);
    
  3. Verifique se todos os pacotes que seus projetos usam são compatíveis com o MVC 5 e a API Web 2. A tabela a seguir mostra os pacotes relacionados ao MVC 4 e à API Web que precisam ser alterados. Se você tiver um pacote que depende de um dos pacotes listados abaixo, entre em contato com os editores para obter as versões mais recentes compatíveis com o MVC 5 e a API Web 2. Se você tiver o código-fonte desses pacotes, deverá recompilá-los com os novos assemblies do MVC 5 e da API Web 2.

    ID do pacote Versão antiga Nova versão
    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> Removido
    Microsoft.AspNet.WebPages.Administration <o:p></o:p> Removido
    Microsoft-Web-Helpers <o:p></o:p> Microsoft.AspNet.WebHelpers

    Observação

    Microsoft-Web-Helpers foi substituído por Microsoft.AspNet.WebHelpers. Você deve remover o pacote antigo primeiro e, em seguida, instalar o pacote mais recente.

    Não há compatibilidade entre versões entre os principais pacotes de ASP.NET. Por exemplo, o MVC 5 é compatível apenas com o Razor 3 e não com o Razor 2.

  4. Abra o projeto no Visual Studio.

  5. Remova qualquer um dos seguintes ASP.NET pacotes NuGet instalados. Você os removerá usando o PMC (Console do Gerenciador de Pacotes). Para abrir o PMC, selecione o menu Ferramentas e, em seguida, selecione Gerenciador de Pacotes NuGet e, em seguida, selecione Console do Gerenciador de Pacotes. Seu projeto pode não incluir todos eles.

    1. Microsoft.AspNet.WebPages.Administration
      Normalmente, esse pacote é adicionado ao atualizar do MVC 3 para o MVC 4. Para removê-lo, execute o seguinte comando no PMC:
      Uninstall-Package -Id Microsoft.AspNet.WebPages.Administration
    2. Microsoft-Web-Helpers
      Esse pacote foi renomeado como Microsoft.AspNet.WebHelpers. Para removê-lo, execute o seguinte comando no PMC:
      Uninstall-Package -Id Microsoft-Web-Helpers
    3. Microsoft.AspNet.Mvc.FixedDisplayMode
      Esse pacote contém uma solução alternativa para um bug no MVC 4 que foi corrigido no MVC 5. Para removê-lo, execute o seguinte comando no PMC:
      Uninstall-Package -Id Microsoft.AspNet.Mvc.FixedDisplayModes
  6. Atualize todos os ASP.NET pacotes NuGet usando o PMC. No PMC, execute o seguinte comando:
    Update-Package
    O Update-Package comando sem parâmetros atualizará todos os pacotes. Você pode atualizar os pacotes individualmente usando o argumento ID. Para obter mais informações sobre o comando update, execute get-help update-package .

Atualizar o arquivo deweb.config do aplicativo

Certifique-se de fazer essas alterações no arquivo deweb.config do aplicativo, não no arquivo web.config na pasta Exibições .

Localize a <runtime>/<assemblyBinding> seção e faça as seguintes alterações:

  1. Nos elementos com o atributo de nome "System.Web.Mvc", altere o número de versão de "4.0.0.0" para "5.0.0.0". (Duas alterações nesse elemento.)

  2. Em elementos com o atributo de nome "System.Web.Helpers" e "System.Web.WebPages" alteram o número de versão de "2.0.0.0" para "3.0.0.0". Quatro alterações ocorrerão, duas em cada um dos elementos.

    <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. Localize a <appSettings> seção e atualize a webpages:version de 2.0.0.0 para 3.0.0.0, conforme mostrado abaixo:

    <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. Remova todos os níveis de confiança diferentes de Full. Por exemplo:

    <securityPolicy>
       <!--<trustLevel name="Medium"  policyFile="web_mediumtrust.config"/>-->
    </securityPolicy>
    

Atualizar os arquivos web.config na pasta Exibições

Se o aplicativo estiver usando áreas, você também precisará atualizar cada arquivo web.config na subpasta Exibições de cada pasta Área.

  1. Atualize todos os elementos que contêm "System.Web.Mvc" da versão "4.0.0.0" para a versão "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. Atualize todos os elementos que contêm "System.Web.WebPages.Razor" da versão "2.0.0.0" para a versão "3.0.0.0". Se esta seção contiver "System.Web.WebPages", atualize esses elementos da versão "2.0.0.0" para a versão "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. Se você removeu o Microsoft-Web-Helpers pacote NuGet em uma etapa anterior, instale Microsoft.AspNet.WebHelpers com o seguinte comando no PMC:
    Install-Package -Id Microsoft.AspNet.WebHelpers

  4. Se o aplicativo usar o método User.IsInRole(), adicione o seguinte ao arquivo Web.config .

    <system.webServer>
        <modules>
          <remove name="RoleManager" />
        </modules>
      </system.webServer>
    

Etapas Finais

Compile e teste o aplicativo.

Remova o GUID do tipo de projeto MVC 4 dos arquivos de projeto.

  1. Em Gerenciador de Soluções, clique com o botão direito do mouse no nome do projeto e selecione Descarregar Projeto.
  2. Clique com o botão direito do mouse no projeto e selecione Editar ProjectName.csproj.
  3. Localize o ProjectTypeGuids elemento e remova o GUID do projeto MVC 4, {E3E379DF-F4C6-4180-9B81-6769533ABE47}.
  4. Salve e feche o arquivo de projeto aberto.
  5. Clique com o botão direito do mouse no projeto e selecione Recarregar Projeto.