「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -戻る --[[.NET開発]] --[[移行・マイグレーション]] * 目次 [#ce88f61c] #contents *概要 [#wa508363] -以前は、[[PCL>#d6cc234a]]のレベルのクロスプラットフォーム対応しか無かったが、~ [[.NET Core>#ybced451]]の登場により、状況は大きく変わった。 -マイクロソフトは、あらゆる環境に対応する開発ツール群を提供しようとしている。 --Any Developer (どんな開発者にも) --Any App (どんなアプリケーションにも) --Any Platform (どんなプラットフォームにも) >この中の、Any Platform に対応するのが、[[.NET Core>#ybced451]]。 **俯瞰図 [#n8b07f6e] とりあえず雰囲気を掴むための最新の図。 #ref(XNET.png,left,nowrap,.NETのクロスプラットフォーム対応) **参考 [#x86dd45a] -【特別企画】Windowsにこだわらない、サティア・ナデラのMicrosoft - クラウド Watch~ https://cloud.watch.impress.co.jp/docs/special/678748.html --.NETはマルチプラットフォーム化される >こういった変化に対応し、さらにMicrosoft独自のテクノロジーを生かしていくためには、~ .NET Frameworkをスタンダードにして、マルチプラットフォームで動作できるようにしていく必要があるのだと思われる。 -「好みのデバイスで好みの開発言語を」--新しいVisual Studioの世界 - ZDNet Japan~ https://japan.zdnet.com/article/35092575/ >.NETスタンダードライブラリを構築して、.NETエコシステムの拡大を目指す。 *用語 [#jee0794a] 色々用語が出てくるので纏める。 **CLI [#r97c0be9] -共通言語基盤(CLI : Common Language Infrastructure) -.NET Frameworkの基幹を構成する仕様(ECMA-335 および ISO/IEC 23271) -CLIは、言語やプラットフォームに依存しない環境を定義しており、~ 様々な言語で書いたソースコードを他のプラットフォームでも使える。 ***概念 [#a045d4d9] -共通型システム --CTS : Common Type System --プログラミング言語間で共通して用いられる型の集合 -メタデータ --プログラムの構造に関する情報。 --プログラミング言語上やツールなどから参照できる。 -共通言語仕様 --CLS: Common Language Specification --相互運用性のためのプログラミング言語に対する規定 -仮想実行システム --VES: Virtual Execution Evnironment --CLIに適合したプログラムの読込と実行。 --メタデータを活用して動的に機械語を生成する。 ***参考 [#j5154bb4] -共通言語基盤 - Wikipedia~ https://ja.wikipedia.org/wiki/%E5%85%B1%E9%80%9A%E8%A8%80%E8%AA%9E%E5%9F%BA%E7%9B%A4 -共通言語仕様の概要~ https://msdn.microsoft.com/ja-jp/library/aa735713.aspx **.NET Framework [#zba914de] 皆さんご存知の.NET Framework。 -.NET Framework - Wikipedia~ https://ja.wikipedia.org/wiki/.NET_Framework ***BCL [#t5566b3a] -BCL : Base Class Library(基本クラスライブラリ) -全てのCLI言語から利用可能な共通言語基盤 (CLI) 標準ライブラリ -基本クラスライブラリ - Wikipedia~ https://ja.wikipedia.org/wiki/%E5%9F%BA%E6%9C%AC%E3%82%AF%E3%83%A9%E3%82%B9%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA ***FCL [#faa7f3bd] -FCL : Framework Class Library -.NET FrameworkのBCLの意味で使用される、BCLのスーパーセット -CLIで定義されている標準ライブラリの.NET Framework実装 -マイクロソフト固有の名前空間を含む ***PCL [#d6cc234a] -PCL : Portable Class Library -PCLの後継は[[.NET Standard]]。 -Microsoft プラットフォーム間でコードを共有できる~ クロスプラットフォーム アプリ・ライブラリを開発可能。 **TFM [#qe7f85c7] Target Framework Monikers (TFMs) ***[[.NET Core]] : netcoreapp [#ybced451] -Consoleアプリケーション : [[.NET Core]] -デスクトップ・アプリケーション : [[UWP]] -Webアプリケーション : [[ASP.NET Core]] ***Mono : mono or xamarin [#r987a356] -monoandroid -monotouch -monomac -xamarinios -xamarinmac ※ [[Xamarin]] ***[[.NET Standard]] : netstandard [#b5de4ecc] .NET 実装の動作の統一性を確立、~ クロスプラットフォーム対応を推進する。 -[[.NET Framework>#zba914de]] > [[BCL>#t5566b3a]] -[[.NET Core>#ybced451]] > [[CoreFx>.NET Core#gd2a8024]] -[[Mono>#r987a356]] > [[Mono>#r987a356]] ***[[.NET 5]] : netcoreapp5.0 ? [#wb6c20f7] ...。 *GUI [#e0ba93b1] **[[Xamarin]] [#cfda6f59] **[[Uno Platform]] [#i2c1857b] *移行 [#p6d53d28] **[[.NET Standardへの移行]] [#c97b888a] **[[.NET Coreへの移行]] [#xd12992f] **[[ASP.NET Coreへの移行]] [#ob21c056] **[[マネージドコードとアンマネージドコードのブリッジ]] [#x270892c] **アナライザー [#we621859] Roslynベースのアナライザー -参考 --Roslyn ベースのアナライザー - .NET | Microsoft Docs~ https://docs.microsoft.com/ja-jp/dotnet/standard/analyzers/ ***.NET API アナライザー [#j9ae38fb] -C# API の互換性リスクの可能性および非推奨の API の呼び出しを検出する -参考 --.NET API アナライザー | Microsoft Docs~ https://docs.microsoft.com/ja-jp/dotnet/standard/analyzers/api-analyzer --NuGet Gallery | Microsoft.DotNet.Analyzers.Compatibility~ https://www.nuget.org/packages/Microsoft.DotNet.Analyzers.Compatibility/ ***.NET Portability Analyzer [#j9ae38fb] -以下のケースで役立つ --ライブラリでマルチプラットフォームをサポートしたい場合や、 --アプリケーションで他のTFMとの互換性を確保する作業を知りたい場合は、 -参考 --.NET Portability Analyzer - .NET | Microsoft Docs~ https://docs.microsoft.com/ja-jp/dotnet/standard/analyzers/portability-analyzer --Portability Analyzerを使ってライブラリの.NET Standard準拠を調べよう - ryuichi111stdの技術日記~ http://ryuichi111std.hatenablog.com/entry/2017/03/07/142248 *事例 [#q943536c] -コンペア~ https://github.com/OpenTouryoProject/OpenTouryo/compare/02-20...SupportNetStandard2&NetCore2 **移行性の評価 [#ufd8a8cd] -.NET Core2.0移行の移行性に関する報告 - OSSコンソーシアム~ https://www.osscons.jp/jofbwaon0-537/#_537 **移行元 [#n17481e6] https://github.com/OpenTouryoProject/OpenTouryo/tree/02-20 ***ライブラリ [#we603e2f] https://github.com/OpenTouryoProject/OpenTouryo/tree/02-20/root/programs/C%23/Frameworks/Infrastructure ***サンプル [#o0814556] https://github.com/OpenTouryoProject/OpenTouryo/tree/02-20/root/programs/C%23/Samples **移行先 [#e3670d04] https://github.com/OpenTouryoProject/OpenTouryo/tree/SupportNetStandard2%26NetCore2 ***ライブラリ [#od2b5ee9] https://github.com/OpenTouryoProject/OpenTouryo/tree/SupportNetStandard2%26NetCore2/root/programs/CS/Frameworks/Infrastructure ***サンプル [#k18eb258] https://github.com/OpenTouryoProject/OpenTouryo/tree/SupportNetStandard2%26NetCore2/root/programs/CS/Samples4NetCore *参考 [#n7c12b05] -ASCII.jp:.NET Core / .NET Framework / Xamarin / Monoの関係を整理する (1/3)~ http://ascii.jp/elem/000/001/156/1156721/ -.NET とか Mono とか Xamarin とかいったい何? Microsoftのプロダクト? - (-> % read write unlearn)~ http://hatappo.hatenadiary.jp/entry/2016/06/29/224930 -さいきんの.NETのこととかNuGetとかCoreとかよく分からないよねーって話 - Qiita~ http://qiita.com/acple@github/items/e80bef939583fc2b0e5e -.NET Core とマルチプラットフォーム~ https://www.slideshare.net/shozon/net-core-66620714 **.NET API Browser [#p5957fa0] https://docs.microsoft.com/en-us/dotnet/api/index ***.NET Standard [#q93b75dc] https://docs.microsoft.com/en-us/dotnet/api/index?view=netstandard-2.0 ***.NET Framework [#x490e789] https://docs.microsoft.com/en-us/dotnet/api/index?view=netframework-4.5 ***.NET Core [#v73e6d06] https://docs.microsoft.com/en-us/dotnet/api/index?view=netcore-2.0 -ASP.NET Core~ https://docs.microsoft.com/en-us/dotnet/api/index?view=aspnetcore-2.0 ***Mono (Xamarin) [#e8aacd69] -iOS~ https://docs.microsoft.com/en-us/dotnet/api/index?view=xamarinios-10.8 -Android~ https://docs.microsoft.com/en-us/dotnet/api/index?view=xamarinandroid-7.1 -Mac~ https://docs.microsoft.com/en-us/dotnet/api/index?view=xamarinmac-3.0 ***Azure SDK for .NET [#gbc10a74] https://docs.microsoft.com/en-us/dotnet/api/index?view=azure-dotnet ---- Tags: [[:.NET開発]], [[:.NET Core]], [[:.NET Standard]]