57

asp vnextでは、3種類のランタイムを定義できます

  • dnxコア
  • dnx451
  • ドットネット

Project.json では、次のようになります。

"frameworks": 
{
    "dotnet": { },
    "dnx451": { },
    "dnxcore50": { }
}^

そして、UIはこれをショートします

ここに画像の説明を入力

私は次のことを想定しています:

dnxCoreは、新しい .net Core フレームワークです。

dotnetは以前のランタイムです

dnx451: project.json で "dotnet" または "dnx451" を定義するときの違いは何ですか?

両方とも .net 実行ランタイムで実行するべきではありませんか?

また、選択したプロジェクト テンプレート (vNext ClassLib または vNext Console Lib) に応じて、デフォルトにはいずれかが含まれます。

4

2 に答える 2

69

別の方法で質問に答える: ライブラリは、SDK が必要とする環境をターゲットにする必要があります。SDK を使用する必要がない場合netstandard(または .NET Core RC2 より前dotnet)。

  • dnxcore50CoreCLR/CoreFx で実行される DNX SDK (非推奨netcoreapp1.0代わりに使用)。
  • dnx451.Net 4.5.1 で動作する DNX SDK (デスクトップ CLR / フル BCL および FCL) (非推奨net451代わりに使用)。
  • net46デスクトップ CLR / フル BCL および FCL で動作する .Net Framework 4.6 SDK。
  • uap10.0.Net Native/CoreFx で実行される UWP Windows 10 SDK。
  • netcoreapp1.0CoreCLR/CoreFx で実行される .NET Core 1.0 SDK。
  • netstandard1.5(RC2、dotnet以前) 依存関係を宣言する純粋な IL コード (PCL コントラクトの代わりに System.Runtime (ベースの) ライブラリ)。フレームワークの依存関係は、.Net 4.5.x 以降、.NET Core または UWP (さまざまなバージョンの System.Runtime ベースのライブラリ セット) で利用できます。RC2dotnetは推奨されていないため、netstandard代わりに使用してください。
  • netstandard2.0(.NET Core 2.0; ~ 2017 年6 月)netstandard.dllすべてのプラットフォーム (.NET Core、.NET Framework、Xamarin、Mono、Unity3D) が実装する (または NotImplementedException をスローする) 必要がある機能セットのみに依存する純粋な IL コード。これnetstandard2.xは、おおよそ .NET Framework の BCL ライブラリです (WMI、WinForms、WPF、WCF、WWF などの FCL コンポーネントを除く)。互換性シムにより、ほとんどの既存の NuGet パッケージは自動的にnetstandard2.0.

したがって、ライブラリにいくつかのアルゴリズムしかない場合や、プラットフォームに固有でない場合は、netstandard/を使用してdotnetください。依存関係のいずれかが制限されている場合、この依存関係は、それを使用するアプリケーション (DNX、UWP、.Net46 など) まで伝播します。

マラキのように、オレンの記事シリーズしか強調できません。(彼は同じトピックで新しいものを書きました: https://oren.codes/2015/07/29/targeting-net-core/ )。

ps: dotnet/netstandardは具体的なランタイムではなく、その抽象化です。この場合、ランタイムを指定することさえせず、代わりに次のように言うターゲットです:ILを正しく解釈するものは何でも行きます。たとえばdnxcore5、特定のランタイム (CoreCLR) を持つ SDK (DNX) を指定するターゲットです。この場合、実行時の動作 (JIT の使用、x-plat 実装の可用性など) についてさらに想定することができます。

pps:次の RC2 リリースでdotnet名前が用語に変換されたことに注意してください。netstandardまた、完全な DNX SDK が .NET Core と ASP.NET チームに分割されました。したがって、.NET Core (CoreCLR/CoreFx) のフレームワーク モニカーはnetcoreapp1.0であり、ASP.NET スタックの 99% はnetstandard1.5. DNX モニカ (dnx451およびdnxcore50) は非推奨です。(.NET Core ではなく) .NET Framework で ASP.NET Core を実行する場合は、net451. 詳細についてはよくお読みください: https://github.com/dotnet/corefx/blob/master/Documentation/architecture/net-platform-standard.md

ppps: 依存関係ベースのコントラクトの概念はそれ以上開発されず、今後の .NET Core 2.0 を含むすべてのプラットフォームで実装する必要があるnetstandard1.x1 つの (巨大な) 標準コントラクト (32k API; ) に変更されたことに注意してください。netstandard2.0この変更には、NuGet パッケージの既存のエコシステム (参照およびフレンド) のほとんどを、中間互換性 shim を使用してパッケージmscorlibに統合できるという利点があります。netstandard2.0

于 2015-08-07T11:10:13.447 に答える
7

dotnetは、多数の .NET Core 4.6 互換性を対象としています。参照リンク

"dotnet これは、アプリ モデルの要件を持たないパッケージ用の新しい .NET Core です。" -参照リンク

したがって、これらの定義により、dotnetは新しいランタイムであり、以前のものではありません

于 2015-07-21T15:50:34.207 に答える