.NET アップグレード アシスタントを使用して ASP.NET MVC アプリを .NET 6 にアップグレードする
.NET アップグレード アシスタントは、.NET Framework ASP.NET MVC アプリを .NET 6 にアップグレードする場合に役立つコマンドライン ツールです。 この記事では、次について説明します。
- .NET Framework ASP.NET MVC アプリに対してツールを実行する方法のデモ
- トラブルシューティングのヒント
.NET Framework ASP.NET MVC アプリのアップグレード
このセクションでは、.NET Framework 4.6.1 を対象として新しく作成した ASP.NET MVC アプリに対して .NET アップグレード アシスタントを実行する方法を説明します。 ツールのインストール方法の詳細については、「.NET アップグレード アシスタントの概要」を参照してください。
デモの初期セットアップ
ご自身の .NET Framework アプリに対して .NET アップグレード アシスタントを実行する場合は、このステップを省略できます。 このステップでは、動作を確認するために試してみたい方のために、使用するサンプルの ASP.NET MVC と Web API (.NET Framework) プロジェクトを設定する方法を示します。
Visual Studio を使用して、.NET Framework を使用した新しい ASP.NET Web アプリケーション プロジェクトを作成します。
プロジェクトに AspNetMvcTest という名前を付けます。 .NET Framework 4.6.1 を使用するようにプロジェクトを構成します。
次のダイアログで、MVC アプリケーションを選択し、 [作成] を選択します。
作成したプロジェクトとそのファイル (特にプロジェクト ファイル) を確認します。
upgrade-assistant の実行
ターミナルを開き、ターゲット プロジェクトまたはソリューションが配置されているフォルダーに移動します。 upgrade-assistant
コマンドを実行します。このとき、ターゲットとするプロジェクトの名前を渡します (プロジェクト ファイルのパスが有効である限り、任意の場所からコマンドを実行できます)。
upgrade-assistant upgrade .\AspNetMvcTest.csproj
ツールが実行され、行われるステップの一覧が表示されます。
各ステップが完了すると、ツールにコマンドのセットが表示されます。ユーザーはそれらを使用して、次のステップを適用またはスキップすること、詳細を確認すること、ログを構成すること、プロセスを終了することができます。 あるステップで実行するアクションがないことが検出された場合は、そのステップがツールで自動的にスキップされ、実行するアクションを含む次のステップに進みます。 他に何も選択していない場合、Enter キーを押すと次のステップが開始されます。
この例では、適用ステップを毎回選択しています。 最初のステップは、プロジェクトのバックアップです。
ツールにバックアップのカスタム パスを入力します。または、既定値を使用します。その場合は、.backup
という拡張子の付いたプロジェクトのバックアップが同じフォルダーに配置されます。 ツールで実行される次のステップは、プロジェクト ファイルを SDK スタイルに変換することです。
プロジェクトの形式が更新されたら、次のステップは、プロジェクトの TFM を更新することです。
次に、ツールによってプロジェクトの NuGet パッケージが更新されます。 複数のパッケージに更新が必要です。さらに、新しいアナライザー パッケージが追加されます。
パッケージが更新されたら、次のステップは、テンプレート ファイル (存在する場合) を追加することです。 必要な 4 つのテンプレート項目がツールに表示され、そして追加されます。 テンプレート ファイルの一覧を次に示します。
Program.cs
Startup.cs
appsettings.json
appsettings.Development.json
これらのファイルは、アプリの起動と構成のために ASP.NET Core によって使用されます。
次に、このツールで構成ファイルを移行します。 ツールでアプリの設定が識別され、サポートされていない構成セクションが無効化されてから、appSettings
構成の値が移行されます。
system.web.webPages.razor/pages/namespaces
が移行されて、ツールによる構成ファイルの移行が完了します。
ツールによって既知の修正プログラムが適用され、C# の参照が新しい対応するものに移行されます。
これは最後のプロジェクトであるため、次のステップ "Move to next project" では、ソリューション全体の移行プロセスを完了するように求められます。
このプロセスが完了したら、プロジェクト ファイルを開いて確認します。 次のような静的ファイルを探します。
<ItemGroup>
<Content Include="fonts\glyphicons-halflings-regular.woff2" />
<Content Include="fonts\glyphicons-halflings-regular.woff" />
<Content Include="fonts\glyphicons-halflings-regular.ttf" />
<Content Include="fonts\glyphicons-halflings-regular.eot" />
<Content Include="Content\bootstrap.min.css.map" />
<Content Include="Content\bootstrap.css.map" />
<Content Include="Content\bootstrap-theme.min.css.map" />
<Content Include="Content\bootstrap-theme.css.map" />
<Content Include="Scripts\jquery-3.4.1.slim.min.map" />
<Content Include="Scripts\jquery-3.4.1.min.map" />
</ItemGroup>
Web サーバーによって提供される静的ファイルは、wwwroot
というルート レベルのフォルダー内の適切なフォルダーに移動される必要があります。 詳細については、「ASP.NET Core の静的ファイル」を参照してください。 ファイルが移動されたら、プロジェクト ファイル内にある、これらのファイルに対応する <Content>
要素を削除できます。 実際、すべての <Content>
要素と、それらが含まれるグループを削除することができます。 また、bootstrap
や jQuery
のようなクライアント側ライブラリへの <PackageReference>
があれば、削除する必要があります。
既定では、プロジェクトはクラス ライブラリとして変換されます。 1 行目の Sdk
属性を Microsoft.NET.Sdk.Web
に変更し、<TargetFramework>
を net5.0
に設定します。 プロジェクトをコンパイルします。 この時点では、エラーの数はかなり少ないはずです。 新しい ASP.NET 4.6.1 MVC プロジェクトを移植する場合は、残りのエラーで App_Start
フォルダー内のファイルが参照されます。
- BundleConfig.cs
- FilterConfig.cs
- RouteConfig.cs
これらのファイルおよび App_Start
フォルダー全体を削除できます。 同様に、Global.asax
および Global.asax.cs
ファイルも削除できます。
この時点で残っているエラーは、バンドルに関連するものだけです。 ASP.NET Core でバンドルと縮小を構成するには、いくつかの方法があります。 プロジェクトに最も適したものを選択してください。
トラブルシューティングのヒント
.NET アップグレード アシスタントの使用時に発生するおそれがある既知の問題がいくつかあります。 場合によっては、.NET アップグレード アシスタントで内部的に使用される try-convert ツールに問題が発生することがあります。
その他のトラブルシューティングのヒントと既知の問題については、ツールの GitHub リポジトリを参照してください。