web-dev-qa-db-ja.com

新しいnetstandardapp TFMとnetcoreapp TFMの違いは何ですか?

NuGetが.NET Coreに関連するいくつかの新しいTFMのサポートを最近追加したことに気付きました。

  • netstandard(1.0-1.5)
  • netstandardapp(1.5)
  • netcoreapp(1.0)

私の知る限り、netstandardは.NET Coreのポータブルプロファイルに相当します。サポートするすべてのプラットフォームを明示的に記述する代わりに、単一のモニカーを使用して複数のプラットフォームをターゲットにすることができます。 portable-net45+netcore45+wp81

一方、 このドキュメントnetstandardappによると、.NET Coreのコンソールアプリケーションに似ています。任意の.NET Coreランタイム(CoreCLR、CoreRTなど)が表すもの。

それでは、netcoreappはどうなるのでしょうか?私はそれの追跡の問題を見つけました ここで これは違いが何であるかを説明するコメントを下部に含んでいますが、私は違いがわからない

NETStandard.Library +アプリホスト

そして

.NET Coreベースインストール

です。誰かが私にそれを説明してもらえますか?

69
James Ko

.NET標準ライブラリ(netstandard)は、アプリモデル全体で一貫したライブラリです。 .NET Core(netcoreapp)は.NET標準ライブラリの上で実行され、AppModelです。 githubページから、.NET Standardアプリケーションとは何か、.NET Coreとの違いは何かを答えます( https://github.com/dotnet/corefx/blob/master/Documentation/architecture/net-standard -applications.md )and( https://github.com/dotnet/corefx/blob/master/Documentation/architecture/net-platform-standard.md

UPDATE:.NETStandardappは廃止されました。 NETCoreアプリがそれを置き換えます( https://github.com/NuGet/Home/issues/2524

Q:.NET Standardアプリケーションとは何ですか? A:.NET Standardアプリケーションは、.NET Coreランタイム(CoreCLR(現在)、. NETNative(将来))で実行できるアプリケーションです。多くの.NETコアプラットフォーム(Windows、OSX、Linux)のいずれかで実行できます。指定されたランタイムによって提供されるホストに依存します。これは、アプリケーションが依存するパッケージから構築された構成可能なフレームワークです。そのアセンブリ読み込みポリシーは、アプリケーション構成なしで新しいバージョンの依存関係を許可します(例:BindingRedirectsは必要ありません)。

Q:これは.NETCoreとどう違うのですか? A:.NETCoreターゲットフレームワークは、Windows 8、Windows 8.1、およびユニバーサルWindowsプラットフォームアプリケーションを表します。互換性のために、このモニカーを「.NET Coreアプリケーション」に再利用することはできません。ブランドの重複は残念です。

Q:これは.NETStandardとどう違うのですか? A:NETStandardターゲットフレームワークは、多くのフレームワークとプラットフォームのAPIサーフェスを表す抽象的なターゲットフレームワークです。そのため、NETStandardアセンブリは、そのアセンブリが対象とするNETStandardをサポートするプラットフォームで実行できます。たとえば、.NETデスクトップ、Windows Phone、ユニバーサルWindowsプラットフォームアプリケーション、.NET標準アプリケーションなどです。NETStandardApplicationは、単一のAPIの表面と実装の両方を備えたプラットフォーム。 .NET標準アプリケーションは、単独で実行可能です。 .NETStandardライブラリは、そのタイプのアプリケーションで使用される特定の具体的なターゲットフレームワークによって公開または消費される必要があります。

Overview of .NET Future innovation

38
Martijn van Put

新しいnetstandardappとnetcoreapp TFMの違いは何ですか?

netstandardappは廃止され、netcoreappは置き換えられます。

それでは、netcoreappは正確には何でしょうか?

netcoreappは、.NET Core Platformのターゲットフレームワークモニカです。 netcoreappをproject.jsonのフレームワークセクションに追加すると、アプリのビルドが.NET Coreで実行されます。

NETStandard.Library +アプリホストと.NET Coreベースインストールの違いはわかりません。誰かが私にそれを説明してもらえますか?

NETStandard.Library + app hostsは、NetStandard.Appパッケージです。これを使用しないでください-それは死んでいます。 3つのアプリホストパッケージと標準ライブラリが含まれています。

  • Microsoft.NETCore.DotNetHostPolicy
  • Microsoft.NETCore.Platforms
  • Microsoft.NETCore.Runtime
  • NETStandard.Library

NET Core base installは、Microsoft.NetCore.Appパッケージです。代わりにこれを使用してください。上記のパッケージのうち2つを保持し、2つを廃棄し、約37個のMicrosoft.*およびSystem.*パッケージを追加します。

  • 追加のMicrosoft.*アセンブリ
  • Microsoft.NETCore.DotNetHostPolicy
  • Microsoft.NETCore.Platforms <----- 2016年4月、これら2つは
  • Microsoft.NETCore.Runtime <------- NETStandard.Libraryの一部。
  • NETStandard.Library
  • 追加のSystem.*アセンブリ

参考文献

https://github.com/NuGet/Home/issues/2524 > netstandardappターゲットフレームワークモニカが「無効になった」ことを示します。

https://github.com/dotnet/cli/issues/2482 >「NetStandardAppをターゲットとするプロジェクトはNetCoreAppに移植する必要があります。NetStandardAppはCLI 1.0.0 RC2でサポートされません。 」

https://www.myget.org/feed/aspnetvnext/package/nuget/NETStandard.Library >パッケージ履歴は、2016年4月の大きな変化を示しています。

19
Shaun Luttin