「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。

-戻る
--[[.NET Standard]]
--[[移行・マイグレーション]]
---[[.NETのクロスプラットフォーム対応]]

* 目次 [#o5a016dc]
#contents

*概要 [#r7faebbc]
下記の「[[移行元 / 移行先>#c59bc8d4]]」の、「[[.NET Standard]]」移行ノウハウをサマリする。~

*詳細 [#u9084419]

**準備 [#k7f8bf18]

***[[移行先>#e3670d04]]プロジェクトを準備する。 [#o36ad6ee]
不要なファイルを削除する(SourceファイルとProjectファイルのみ残す)。
-packages.config
-Properties\AssemblyInfo.cs

***Projectファイルを準備する。 [#e8f374c4]
-以下のようなProjectファイルを準備する。~
(既存のProjectファイルの中身を以下で置き換えればイイ)
 <Project Sdk="Microsoft.NET.Sdk">
   <PropertyGroup>
     <TargetFramework>netstandard2.0</TargetFramework>
   </PropertyGroup>
 </Project>

-.NET Standardでは、配下のSourceファイルが自動で追加される。~
必要に応じて、ファイルやフォルダの除外設定を行う。~
※ 除外されるファイルやフォルダだけがProjectファイルに明記される。

***ProjectをVisual Studioから開く。 [#w8f1924b]
Projectファイルをダブルクリックするか、空のソリューションに追加する。

***Projectの初期設定を行う。 [#tb3a8fcc]
 <PropertyGroup>
   <TargetFramework>netstandard2.0</TargetFramework>
   <AssemblyName>OpenTouryoStd.Public</AssemblyName>
   <RootNamespace>Touryo.Infrastructure.Public</RootNamespace>
 </PropertyGroup>

**[[ポーティング移行>移行・マイグレーション#ue626a7c]] [#d3087e43]

***移行対象ファイルを選別する。 [#j19db7af]
-コンパイル・エラーをチェックしながら移行対象ファイルを選別する。

-[[必要に応じて、NuGetパッケージを追加する。>#b63d5929]]

-依存していた処理を削除するか[[ポーティング移行>#k31bea09]]する。

--Windows
--net11-net47
--VisualBasic
--上記以外のNuGetパッケージ

***必要に応じて、NuGetパッケージを追加する。 [#b63d5929]
-参照が無くが発生したら、NuGetパッケージを確認しインストール。~
これにより、NuGetパッケージにnetstandardが含まれるかどうか確認できる。

-以下のようなライブラリを探す。
--System系
---System.Configuration.ConfigurationManager

--System.Data系~
[[ADO.NETデータプロバイダ]]
---System.Data.SqlClient
---System.Data.Odbc
---Npgsql
---MySql.Data

--[[ASP.NET Core>#odebd8c3]]系
--[[ASP.NET Core>#odebd8c3]]系~
※ ココが比較的、大変。
---[[System.Web>#i5893ae7]]
---[[Microsoft.Owin>#gce2c3f9]]

--その他
---log4net
---Json.NET

-以下は、下記の「[[移行元 / 移行先>#c59bc8d4]]」で追加したNuGetパッケージ。

--Public
    <PackageReference Include="log4net" Version="2.0.8" />
    <PackageReference Include="Newtonsoft.Json" Version="11.0.2" />
    <PackageReference Include="System.Configuration.ConfigurationManager" Version="4.4.1" />
    <PackageReference Include="System.Data.Odbc" Version="4.5.0-preview1-26216-02" />
    <PackageReference Include="System.Data.SqlClient" Version="4.4.3" />
---DamPstGrS
 <PackageReference Include="Npgsql" Version="3.2.7" />
---DamMySQL
 <PackageReference Include="MySql.Data" Version="6.10.6" />

--Framework
 <PackageReference Include="Microsoft.AspNetCore.WebUtilities" Version="2.0.2" />
    <PackageReference Include="Microsoft.AspNetCore.Http" Version="2.0.2" />
    <PackageReference Include="Microsoft.AspNetCore.Http.Extensions" Version="2.0.2" />
    <PackageReference Include="Microsoft.AspNetCore.Session" Version="2.0.2" />
    <PackageReference Include="Microsoft.AspNetCore.WebUtilities" Version="2.0.2" />
    <PackageReference Include="Microsoft.Extensions.PlatformAbstractions" Version="1.1.0" />

--Business~


***必要に応じて、[[ポーティング移行>移行・マイグレーション#ue626a7c]]する。 [#k31bea09]

以下は、下記の「[[移行元 / 移行先>#c59bc8d4]]」でポーティング移行した処理。

-Public~
あとでDiff分析してまとめる。

-Framework~
あとでDiff分析してまとめる。

-Business~
あとでDiff分析してまとめる。

*サマリ [#o043b2e7]
既存ライブラリは、以下のような方針で移行できると考える(あくまで一例)。

https://github.com/OpenTouryoProject/OpenTouryo/issues/235#issuecomment-377419287

*参考 [#p59f57c7]

**移行元 / 移行先 [#c59bc8d4]

***移行元 [#n17481e6]
https://github.com/OpenTouryoProject/OpenTouryo/tree/develop/root/programs/C%23/Frameworks/Infrastructure

***移行先 [#e3670d04]
https://github.com/OpenTouryoProject/SampleProgram/tree/netstandard/PrototypeModel/NETStandard

**[[ASP.NET Core]] [#odebd8c3]
-対応するライブラリが「Microsoft.AspNetCore.XXXX」にある可能性がある。
-これらのライブラリは[[ASP.NET Core]]ではなく、[[.NET Standard]]前提になる。~
https://www.nuget.org/packages/Microsoft.AspNetCore.All

***[[System.Web>ASP.NET Coreへの移行#i5893ae7]] [#i5893ae7]

***[[Microsoft.Owin>ASP.NET Coreへの移行#gce2c3f9]] [#gce2c3f9]

**移行情報 [#p6d53d28]
***[[.NET Coreへの移行]] [#xd12992f]
***[[ASP.NET Coreへの移行]] [#ob21c056]

**.NET API Browser [#j6b71fa5]
https://docs.microsoft.com/en-us/dotnet/api/index

***.NET Standard API Reference [#j377c636]
https://docs.microsoft.com/en-us/dotnet/api/index?view=netstandard-2.0

----
Tags: [[:.NET開発]], [[:.NET Core]], [[:.NET Standard]], [[:移行]]


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS