マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

※ 対象は、.NET Standard 2.0。

詳細

準備

移行プロセスの確認

移行性評価の実施

必要に応じて、以下ツールを使用し移行性を評価する。

移行先プロジェクトを準備する。

不要なファイルを削除する。

  • packages.config
  • Properties\AssemblyInfo?.cs

Projectファイルを準備する。

  • 以下のようなProjectファイルを準備する。
    (既存のProjectファイルの中身を以下で置き換えればイイ)
    <Project Sdk="Microsoft.NET.Sdk">
      <PropertyGroup>
        <TargetFramework>netstandard2.0</TargetFramework>
      </PropertyGroup>
    </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パッケージを追加する。

必要に応じて、ポーティング移行する。

以下のPlatformやLibraryに依存していた処理を、削除するか、ポーティング移行する。

  • Windows
  • net11 - net47 - netXX
  • Microsoft.VisualBasic?
  • 上記以外のNuGetパッケージ

パッケージ・マネージャ

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

以下の情報を元にマイグレーションする必要がある。

ADO.NET

型付きDataSet?

DatasetExtensions?

LINQ to DataSet?を使用できない。

その他ライブラリ

log4net

  • 一部、インターフェイスの変更があるもよう。
  • 引数にRepositoryが必要になったようだが、
    Microsoft.Extensions.Logging.ILoggerProvider?の規則などには関係が無い模様。

参考

その他

  • DotNetZip? ---> ・・・
  • System.Net.Mail ---> MailKit?
  • System.Drawing ---> ImageProcessor?

ASP.NET Core系ライブラリ

System.Web

対応するライブラリが「Microsoft.AspNetCore?.XXXX」にある可能性がある。

RootPath?

#内容netnetcore, netstandard
1現在のアプリケーションのルート仮想パス(「/」や「/アプリ名」のような)。HttpContext?.Current.Request.ApplicationPath?HttpContext?.Request.PathBase?
2サーバー アプリケーションのルート ディレクトリの物理ファイル システム パスHttpRequest?.PhysicalApplicationPath?IApplicationEnvironment?.ApplicationBasePath?

HttpContext?

※ 上記の「Mimicking HttpContext?.Current」で.NET Standardなライブラリ化も可能。

Session

HttpContext経由でアクセスする。

Cookie

その他

  • System.Web.Routing.RouteTable? ---> Microsoft.AspNetCore?.Routing.RouteTable?
  • ・・・

Microsoft.Owin

対応するライブラリが「Microsoft.AspNetCore?.XXXX」にある可能性がある。

Base64Url

ASP.NET Core系ミドルウェア

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への移行の情報を含む。

.NET Coreへの移行

ASP.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, :移行


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-04-24 (火) 17:53:35 (28d)