.NET Framework から .NET にアップグレードした後に最新化する
この記事では、.NET Framework から .NET にアップグレードした後にアプリを最新化するさまざまな方法について説明します。 .NET Upgrade Assistant ツールを使用して、アプリを .NET にアップグレードします。
API が見つかりません
.NET Framework アプリをアップグレードする場合、ほとんどの場合、いくつかの非互換性があります。 これは、.NET Framework が Windows 専用テクノロジであり、.NET がクロスプラットフォーム テクノロジであるためです。 一部のライブラリは含まれません。 たとえば、.NET では、.NET Framework のように Windows レジストリにアクセスするためのすぐに使用できる API は提供されません。 Windows レジストリのサポートは、Microsoft.Win32.Registry
NuGet パッケージによって提供されます。 多くの .NET Framework 固有のライブラリは.NET または .NET Standard に移植されており、NuGet でホストされています。 プロジェクトに不足している参照が見つかる場合は、NuGet を検索します。
Windows 互換機能パック
移行後に、新しいバージョンの .NET でサポートされていない .NET Framework API に依存関係がある場合は、Microsoft.Windows.Compatibility
NuGet パッケージで見つかる可能性があります。 .NET プロジェクトに約 20,000 個の API が追加され、プロジェクトで使用できる API セットが大幅に増加します。 これらの API には、Windows Management Instrumentation (WMI) や Windows EventLog に関連する API など、Windows 専用の API が含まれます。 詳細については、「Windows 互換機能パックを使用して.NETにコードを移植する」を参照してください。
Web ブラウザー コントロール
Windows Presentation Foundation や Windows フォームなどの Windows デスクトップ テクノロジを対象とするプロジェクトには、Web ブラウザー コントロールが含まれる場合があります。 提供される Web ブラウザー コントロールは、HTML5 やその他の最新の Web テクノロジより前に設計された可能性が最も高く、古いと見なされます。 Microsoft は、最新の Web ブラウザー コントロールの置き換えとして、Microsoft.Web.WebView2
NuGet パッケージ を発行します。
App.config
.NET Framework では、App.config ファイルを使用して、接続文字列やログ プロバイダーの構成などのアプリの設定を読み込みます。 最新の .NET では、アプリ設定に appsettings.json ファイルが使用されます。 アップグレード アシスタントの CLI バージョンでは、App.config ファイルから appsettings.jsonへの変換が処理されますが、Visual Studio 拡張機能では処理されません。
ヒント
appsettings.json ファイルを使用しない場合は、System.Configuration.ConfigurationManager
NuGet パッケージをアプリに追加すると、コードがコンパイルされ、App.config ファイルが使用されます。
appsettings.json は設定と接続文字列を格納および取得する最新の方法ですが、アプリには App.config ファイルを使用するコードが残っています。 アプリが移行されると、System.Configuration.ConfigurationManager
NuGet パッケージがプロジェクトに追加され、App.config ファイルを使用するコードは引き続きコンパイルされます。
ライブラリが .NET にアップグレードされると、App.configではなく appsettings.json をサポートすることで最新化されます。たとえば、.NET 6 以降でアップグレードされた .NET Framework のログ プロバイダーは、設定に App.config を使用しなくなりました。 彼らの指示に従い、App.configの使用をやめることは、あなたにとって良いことです。
appsettings.json のサポートは、Microsoft.Extensions.Configuration
NuGet パッケージによって提供されます。
appsettings.json ファイルを構成プロバイダーとして使用するには、次の手順を実行します。
アップグレードされたアプリによって参照されている場合は、
System.Configuration.ConfigurationManager
NuGet パッケージまたはライブラリを削除します。Microsoft.Extensions.Configuration.Json
NuGet パッケージを追加します。appsettings.jsonという名前のファイルを作成します。
- ソリューション エクスプローラー でプロジェクト ファイルを右クリックし、[新しい項目の追加]>を選択します。
- 検索ボックスに「
json
」と入力します。 - JavaScript JSON 構成ファイル テンプレートを選択し、名 を appsettings.jsonに設定します。
- [追加する] を押して、新しいファイルをプロジェクトに追加します。
出力ディレクトリにコピーする appsettings.json ファイルを設定します。
ソリューション エクスプローラー で、appsettings.json ファイルを見つけて、次の プロパティを設定します。
- ビルド アクション: コンテンツ
- 出力ディレクトリへのコピー: 常にコピー
アプリのスタートアップ コードで、設定ファイルを読み込む必要があります。
アプリのスタートアップ コードは、プロジェクトの種類によって異なります。 たとえば、WPF アプリではグローバル セットアップに
App.xaml.cs
ファイルが使用され、Windows フォーム アプリでは起動にProgram.Main
メソッドが使用されます。 いずれの場合も、起動時に次の 2 つの操作を行う必要があります。- アプリ内のどこからでもアクセスできる
internal static
(Visual Basic のFriend Shared
) メンバーを作成します。 - 起動時に、そのメンバーにインスタンスを割り当てます。
次の例では、
Config
という名前のメンバーを作成し、Main
メソッドでインスタンスを割り当て、接続文字列を読み込みます。using Microsoft.Extensions.Configuration; internal class Program { internal static IConfiguration Config { get; private set; } private static void Main(string[] args) { Config = new ConfigurationBuilder() .AddJsonFile("appsettings.json") .Build(); // Use the config file to get a connection string. string? myConnectionString = Config.GetConnectionString("database"); // Run the rest of your app. } }
Imports Microsoft.Extensions.Configuration Module Program Private _config As IConfiguration ' Shared not required since Program is a Module Friend Property Config As IConfiguration Get Return _config End Get Private Set(value As IConfiguration) _config = value End Set End Property Sub Main(args As String()) Config = New ConfigurationBuilder() _ .AddJsonFile("appsettings.json") _ .Build() ' Use the config file to get a connection string Dim myConnectionString As String = Config.GetConnectionString("database") ' Run the rest of your app End Sub End Module
- アプリ内のどこからでもアクセスできる
新しい構成 API を使用するようにコードの残りの部分を更新します。
プロジェクトから App.config ファイルを削除します。
注意
App.config ファイルなしでアプリが正しく実行されていることを確認します。 ソース管理を使用するか、ファイルを別の場所にコピーして、App.config ファイルをバックアップします。 アプリを徹底的にテストしたら、App.config ファイルを削除します。
.NET