web-dev-qa-db-ja.com

.Net Core、Portable、Standard、Compact、UWP、およびPCLの違いは?

聞いたことがあります

  • .Net Core
  • .Netポータブル
  • .Net標準
  • .Net Compact
  • ユニバーサルWindowsプラットフォーム
  • ポータブルクラスライブラリ

これらはすべて、「複数のプラットフォームをターゲットにできる完全な.Netのサブセット」として説明されました。だから私の質問は

  1. 違いは何ですか??
  2. できるだけ多くの聴衆に使用できるライブラリを作成したい場合、どれが(または複数)使用する必要がありますか?

(私の特定の状況:私は ライブラリ .Net 2.0、.Net 4.5、およびUWPをターゲットにしています。UWPをターゲットにするには、新しいVSプロジェクトを作成し、既存のすべてのファイルをリンクする必要がありました、それは大きな痛みです。今、誰かがそれがPCLのために働かないと私に言っており、その音から私は.Net標準のためにもう一度それをしなければなりません!?)

最初に2番目の質問に答えます。

.Net 2.0、.Net 4.5、およびUWPをターゲットとするライブラリがあります。 UWPをターゲットにするには、新しいVSプロジェクトを作成し、既存のすべてのファイルをリンクする必要がありましたが、これは大きな苦痛です。今、誰かがそれがPCLでは機能しないと私に言っています、そしてその音から私は.NET標準のためにもう一度それをしなければなりません!?)

できるだけ多くのユーザーに使用できるライブラリを作成したい場合、これらのどれを使用する必要がありますか?

短い答え:netstandardをターゲットにする必要があります。必要なすべてのAPIが含まれる 最低バージョン を使用します。 API Port to 既存のプロジェクトで特定のnetstandardバージョンとの互換性を確認する などのツールを使用できます。

残念ながら、このアプローチは古いプラットフォーム、あなたの場合は.NET 2.0を残します。 .NET 2.0のサポートを維持する必要がある場合は、別個の.NET 2.0アセンブリをビルドするための別個のプロジェクト(リンクされたファイルを使用)が必要です。

詳細については...

違いは何ですか!?

  • 。Net Standardnetstandard)-これは、新しいクロスプラットフォームBCL APIです。それは単なるAPI定義であり、実装ではないという意味での「標準」です。このAPI(のバージョン)にライブラリをコンパイルでき、そのバージョンをサポートするプラットフォームで実行できるという考え方です。
  • 。Net Core-これは、netstandardのリファレンス実装と考えることができます(数ビット追加)。それは、そのAPIのクロスプラットフォーム実装です。 UIや他のフレームワークがその上に構築される可能性はありますが、現時点では、ASP.NET Coreの選択プラットフォームとして唯一の足場が機能しています。 [補足:歴史的な理由により、「。NET Core」はnetcore NuGetターゲットとは完全に異なります。 NuGetコンテキストでは、 netcoreは "Windows 8/8.1/10"] を意味します。
  • 。Net PortableおよびPortable Class Libraries-Portable Class Libraries(PCL)クロスプラットフォームAPIを提供する最小公分母アプローチです。 ターゲットプラットフォームの広い範囲 をカバーしますが、それらは不完全であり、将来も保証されていません。これらは本質的にnetstandardに置き換えられました。
  • 。Net Compact-これは、独自のAPIを備えた完全に異なる.NETフレームワークです。他のフレームワーク、PCL、またはnetstandardバージョンとは完全に互換性がありません。そのため、他のプラットフォームよりもサポートがはるかに困難です。ただし、メモリの制約が厳しいデバイスでは引き続き使用されます。
  • Universal Windows Platform-これはWindows Phoneとデスクトップ間のWin10時代のAPIのマージであり、Windowsストアアプリ/ライブラリを両方のプラットフォーム向けに作成できました。 。これは本質的にnetstandardに置き換えられました。
47
Stephen Cleary