「マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
※ 対象は、.NET Standard 2.0。
詳細 †
準備 †
移行性評価の実施 †
必要に応じて、以下ツールを使用し移行性を評価する。
- .NET Portability Analyzer
- .NET Compatibility Diagnostic Tools
移行先プロジェクトを準備する。 †
不要なファイルを削除する。
- packages.config
- Properties\AssemblyInfo?.cs
Projectファイルを準備する。 †
- .NET Standardでは、配下のSourceファイルが自動で追加される。
必要に応じて、ファイルやフォルダの除外設定を行う。
※ netstandardやnetcoreでは、除外されるファイルやフォルダだけがProjectファイルに明記される。
ProjectをVisual Studioから開く。 †
Projectファイルをダブルクリックするか、空のソリューションに追加する。
Projectの初期設定を行う。 †
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<AssemblyName>XXXX</AssemblyName>
<RootNamespace>YYYY</RootNamespace>
</PropertyGroup>
移行対象ファイルを選別する。 †
- コンパイル・エラーをチェックしながら移行対象ファイルを選別する。
- クラス・メソッドの有/無については、以下の検索システムを使用すると良い。
必要に応じて、NuGetパッケージを追加する。 †
- 以下のライブラリの移行先をNuGetパッケージから探す。
- System.Data系ライブラリ
ADO.NETデータプロバイダ
- System.Data.SqlClient?
- System.Data.Odbc
- Npgsql
- MySql?.Data
以下のPlatformやLibraryに依存していた処理を、削除するか、ポーティング移行する。
- Windows
- net11 - net47 - netXX
- Microsoft.VisualBasic?
- 上記以外のNuGetパッケージ
パッケージ・マネージャ †
引き続き使用できる。 †
Dependencies †
.NET Standard、.NET Core開発に活用できるNuGetライブラリは、
.NET Standard、.NET Core 側にだけ、Dependencies を持つ。
※ しかし、実際には、Dependenciesが正確に書かれていないケースも多く、
(「target="lib\netXXX」毎にDependenciesが異なるので当然と言えば当然)
実際にインストールして.NET Standardに対応しているかどうかを判断する。
System系ライブラリ †
*.config †
System.Configuration.ConfigurationManager? †
Microsoft.Extensions.Configuration †
以下の情報を元にマイグレーションする必要がある。
- 参考
- microsoft.com
- stackoverflow.com
その他ライブラリ †
log4net †
- 一部、インターフェイスの変更があるもよう。
- 引数にRepositoryが必要になったようだが、
Microsoft.Extensions.Logging.ILoggerProvider?の規則などには関係が無い模様。
参考 †
その他 †
- DotNetZip? ---> ・・・
- System.Net.Mail ---> MailKit?
- System.Drawing ---> ImageProcessor?
System.Web †
対応するライブラリが「Microsoft.AspNetCore?.XXXX」にある可能性がある。
RootPath? †
- HttpContext?.Current.Request.ApplicationPath?
- ・・・
HttpContext? †
※ 上記の「Mimicking HttpContext?.Current」で.NET Standardなライブラリ化も可能。
※ HttpContext経由でアクセスする。
Cookie †
その他 †
- System.Web.Routing.RouteTable? ---> Microsoft.AspNetCore?.Routing.RouteTable?
- ・・・
Microsoft.Owin †
対応するライブラリが「Microsoft.AspNetCore?.XXXX」にある可能性がある。
Base64Url †
Filters †
Microsoft.AspNetCore?.Mvc.Filters
Filterクラス †
- Filterパイプラインが再実装されて、分かりやすくシンプルになった。
- ASP.NET MVC 5 と同じように扱える抽象クラスが Core MVC でも用意されている。
(ActionFilterAttribute?, ResultFilterAttribute?, ExceptionFilterAttribute?)
- Resource Filterにより、キャッシュなどパフォーマンスの改善の実装が容易に。
- ただし、一部にインターフェイスの変更はある(フィルタ・メソッド、属性の引数)
- また、下記が追加された。
- 非同期版のメソッドの追加。
- 属性だけでなくDIとの連携した適用が可能になった。
参考 †
MVC †
Microsoft.AspNetCore?.Mvc
Controllerクラス †
WebAPI †
Controllerクラス †
Filter、FilterAttribute?クラス †
参考 †
.NET Standardは、.NET Coreのサブセットなので、≒.NET Core。
なので、以下のリンクは、.NET Coreへの移行の情報を含む。
microsoft.com †
Microsoft Docs †
MSDN magazine > Essential .NET †
.NET API Browser †
https://docs.microsoft.com/en-us/dotnet/api/index
その他 †
Tags: :.NET開発, :.NET Core, :.NET Standard, :移行