ASP.NET MVC 4 と Web API プロジェクトを ASP.NET MVC 5 と Web API 2 にアップグレードする
作成者 : Rick Anderson
ASP.NET MVC 5 と Web API 2 には、属性ルーティング、認証フィルターなど、多くの新機能が用意されています。 詳細については、 https://www.asp.net/vnext をご覧ください。
このチュートリアルでは、アプリケーションを最新バージョンにアップグレードするために必要な手順について説明します。
Note
MVC 4 と Web API から次のバージョンへの破壊的変更については、「Visual Studio 2013 リリース ノートの ASP.NET and Web Tools」を参照してください。
この記事は、Youngjune Hong と Rick Anderson ( @RickAndMSFT ) によって執筆されました。
アップグレードの手順
プロジェクトをバックアップします。 このチュートリアルでは、プロジェクト ファイル、パッケージ構成、web.config ファイルを変更する必要があります。
Web API から Web API 2 にアップグレードする場合は、global.asax で次のように変更します。
WebApiConfig.Register(GlobalConfiguration.Configuration);
to
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 Note
Microsoft-Web-Helpers は Microsoft.AspNet.WebHelpers に置き換えられました。 最初に古いパッケージを削除してから、新しいパッケージをインストールする必要があります。
メジャー ASP.NET パッケージ間のバージョン間の互換性はありません。 たとえば、MVC 5 は Razor 3 とのみ互換性があり、Razor 2 とは互換性がありません。
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 引数を使用してパッケージを個別に更新できます。 update コマンドの詳細については、 を実行get-help update-package
します。
アプリケーション web.config ファイルを更新する
これらの変更は、Views フォルダー内のweb.config ファイルではなく、アプリ web.config ファイルで行ってください。
セクションを <runtime>/<assemblyBinding>
見つけて、次の変更を行います。
name 属性が "System.Web.Mvc" の要素で、バージョン番号を "4.0.0.0" から "5.0.0.0" に変更します。 (その要素の 2 つの変更)。
name 属性 "System.Web.Helpers" と "System.Web.WebPages" を持つ要素で、バージョン番号を "2.0.0.0" から "3.0.0.0" に変更します。 4 つの変更が行われ、各要素に 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>
見つけて、次に示すように Web ページ: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 ファイルを更新する
アプリケーションで領域を使用している場合は、各 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" を含むすべての要素をバージョン "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}
削除します。 - 開いているプロジェクト ファイルを保存して閉じます。
- プロジェクトを右クリックし、[プロジェクトの 再読み込み] を選択します。
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示