Sposób uaktualniania projektu wzorca ASP.NET MVC 4 i Web API do wersji ASP.NET MVC 5 i Web API 2
ASP.NET MVC 5 i Web API 2 udostępniają wiele nowych funkcji, w tym routing atrybutów, filtry uwierzytelniania i wiele innych. Aby uzyskać więcej informacji, zobacz https://www.asp.net/vnext .
Ten przewodnik przeprowadzi Cię przez kroki wymagane do uaktualnienia aplikacji do najnowszej wersji.
Uwaga
Aby uzyskać informacje o zmianach powodujących niezgodność z interfejsu MVC 4 i interfejsu API sieci Web, zobacz ASP.NET and Web Tools informacje o wersji Visual Studio 2013 wersji.
Ten artykuł został napisany przez Youngjune Hong i Rick Anderson ( @RickAndMSFT )
Kroki uaktualniania
Utwórz kopię zapasową projektu. Ten przewodnik będzie wymagał wprowadzenia zmian w pliku projektu, konfiguracji pakietu i web.config plików.
Aby przeprowadzić uaktualnienie z internetowego interfejsu API do internetowego interfejsu API 2, w pliku global.asax zmień:
WebApiConfig.Register(GlobalConfiguration.Configuration);
na wartość
GlobalConfiguration.Configure(WebApiConfig.Register);
Upewnij się, że wszystkie pakiety używane przez projekty są zgodne z interfejsem MVC 5 i internetowym interfejsem API 2. W poniższej tabeli przedstawiono pakiety powiązane z interfejsem API sieci Web i MVC 4, niż trzeba je zmienić. Jeśli masz pakiet zależny od jednego z pakietów wymienionych poniżej, skontaktuj się z wydawcami, aby uzyskać nowsze wersje zgodne z interfejsem MVC 5 i internetowym interfejsem API 2. Jeśli masz kod źródłowy dla tych pakietów, należy je ponownie skompilować przy użyciu nowych zestawów mvC 5 i internetowego interfejsu API 2.
Identyfikator pakietu Stara wersja Nowa wersja 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:p> Zostaną usunięte Microsoft.AspNet.WebPages.Administration <o:p></o:p:p> Zostaną usunięte Pomocnicy microsoft-web <o:p></o:p:p> Microsoft.AspNet.WebHelpers Uwaga
Microsoft-Web-Helpers został zastąpiony przez microsoft.AspNet.WebHelpers. Najpierw należy usunąć stary pakiet, a następnie zainstalować nowszy pakiet.
Nie ma zgodności między wersjami wśród głównych pakietów ASP.NET. Na przykład MVC 5 jest zgodny tylko z Razor 3, a nie Razor 2.
Otwórz projekt w programie Visual Studio.
Usuń dowolną z następujących ASP.NET zainstalowanych pakietów NuGet. Te elementy zostaną usunięte przy użyciu konsoli Menedżera pakietów (PMC). Aby otworzyć pmC, wybierz menu Narzędzia , a następnie wybierz pozycję Menedżer pakietów NuGet, a następnie wybierz pozycję Konsola menedżera pakietów. Projekt może nie zawierać wszystkich tych elementów.
Microsoft.AspNet.WebPages.Administration
Ten pakiet jest zwykle dodawany podczas uaktualniania z mvC 3 do MVC 4. Aby go usunąć, uruchom następujące polecenie w pmC:
Uninstall-Package -Id Microsoft.AspNet.WebPages.Administration
Microsoft-Web-Helpers
Ten pakiet został ponownie nazwany jakoMicrosoft.AspNet.WebHelpers
. Aby go usunąć, uruchom następujące polecenie w pmC:
Uninstall-Package -Id Microsoft-Web-Helpers
Microsoft.AspNet.Mvc.FixedDisplayMode
Ten pakiet zawiera obejście dla usterki w MVC 4, która została naprawiona w MVC 5. Aby go usunąć, uruchom następujące polecenie w usłudze PMC:
Uninstall-Package -Id Microsoft.AspNet.Mvc.FixedDisplayModes
Uaktualnij wszystkie pakiety NuGet ASP.NET przy użyciu kontrolera PMC. W usłudze PMC uruchom następujące polecenie:
Update-Package
PolecenieUpdate-Package
bez żadnych parametrów zaktualizuje każdy pakiet. Pakiety można aktualizować indywidualnie przy użyciu argumentu ID. Aby uzyskać więcej informacji o poleceniu aktualizacji, uruchom polecenieget-help update-package
.
Aktualizowanie pliku web.config aplikacji
Pamiętaj, aby wprowadzić te zmiany w pliku web.config aplikacji, a nie w pliku web.config w folderze Widoki .
Znajdź sekcję <runtime>/<assemblyBinding>
i wprowadź następujące zmiany:
W elementach o atrybucie name "System.Web.Mvc" zmień numer wersji z "4.0.0.0" na "5.0.0.0". (Dwie zmiany w tym elemecie).
W elementach o nazwie atrybut "System.Web.Helpers" i "System.Web.WebPages" zmień numer wersji z "2.0.0.0" na "3.0.0.0". Zostaną wprowadzone cztery zmiany, dwa w każdym z elementów.
<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
Znajdź sekcję
<appSettings>
i zaktualizuj strony internetowe:wersja z wersji 2.0.0.0 do 3.0.0.0, jak pokazano poniżej:<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>
Usuń wszystkie poziomy zaufania inne niż Pełne. Na przykład:
<securityPolicy> <!--<trustLevel name="Medium" policyFile="web_mediumtrust.config"/>--> </securityPolicy>
Aktualizowanie plików web.config w folderze Views
Jeśli aplikacja używa obszarów, należy również zaktualizować każdy plik web.config w podfolderie Views każdego folderu Obszaru.
Zaktualizuj wszystkie elementy zawierające ciąg "System.Web.Mvc" z wersji "4.0.0.0" do wersji "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>
Zaktualizuj wszystkie elementy zawierające ciąg "System.Web.WebPages.Razor" z wersji "2.0.0.0" do wersji"3.0.0.0". Jeśli ta sekcja zawiera ciąg "System.Web.WebPages", zaktualizuj te elementy z wersji "2.0.0.0" do wersji"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>
Jeśli pakiet NuGet został usunięty
Microsoft-Web-Helpers
w poprzednim kroku, zainstaluj goMicrosoft.AspNet.WebHelpers
za pomocą następującego polecenia w konsoli PMC:
Install-Package -Id Microsoft.AspNet.WebHelpers
Jeśli aplikacja używa metody User.IsInRole(), dodaj następujący kod do pliku Web.config .
<system.webServer> <modules> <remove name="RoleManager" /> </modules> </system.webServer>
Ostatnie kroki
Skompiluj i przetestuj aplikację.
Usuń identyfikator GUID typu projektu MVC 4 z plików projektu.
- W Eksplorator rozwiązań kliknij prawym przyciskiem myszy nazwę projektu, a następnie wybierz pozycję Zwolnij projekt.
- Kliknij prawym przyciskiem myszy projekt i wybierz polecenie Edytuj projectName.csproj.
- Znajdź element ,
ProjectTypeGuids
a następnie usuń identyfikator GUID projektu MVC 4,{E3E379DF-F4C6-4180-9B81-6769533ABE47}
. - Zapisz i zamknij otwarty plik projektu.
- Kliknij prawym przyciskiem myszy projekt i wybierz polecenie Załaduj ponownie projekt.