web-dev-qa-db-ja.com

net461を唯一のフレームワークとして設定したASP.NET Core Webアプリケーション(.NET Core)の使用と(.NET Framework)テンプレートの使用の違い

.NET Core RC2のリリースにより、Microsoftは3つのWebアプリケーションテンプレートを作成しました。

  • ASP.NET Webアプリケーション(.NET Framework)—古い
  • ASP.NET Core Web Application(.NET Framework)— Windowsのみでホストされる新しい
  • ASP.NET Core Webアプリケーション(.NET Core)— Linux、OSX、Windows

新しいコアWebアプリケーションテンプレートを使用しようとしていますが、Linux、OSX、Windowsをターゲットにしようとせずに、ASP.NETコアWebアプリケーション(.NET Framework)が私にぴったりのようです。時間がかかりましたが、このプロジェクトタイプで動作するクラスライブラリを追加するには、クラスライブラリ(.NET Core)を追加し、フレームワークセクションをWebアプリケーションに合わせてnet461のみに変更する必要があることを学びました。

"frameworks": {
    "net461": { }
}

私の質問:

ASP.NET Core Webアプリケーション(.NET Core)を作成することとproject.jsonでnet461を唯一のターゲットフレームワークにすることの違いは何ですか

そして

デフォルトでnet461のみを含むASP.NET Core Web Application(.NET Framework)プロジェクトを作成するだけです。

プロジェクトの公開方法など、私が知らない他の違いはありますか?

59
Blake Rivell

ASP.NET Core Webアプリケーション(.NET Core)の作成とproject.jsonでの作成の違いは何ですか?

ASP.NET Core Web Application.NET Framework)プロジェクトを作成するのと同じことです。 2つの間のプロジェクトのタイプは.csprojファイルによって決定され、.csprojでターゲットを.NET Coreから.NET Frameworkに変更しました。 ASP.NET Coreの以前のリリース/ベータバージョンでは、両方のフレームワークをproject.jsonファイルに含めることができました(.NET Core 2.0の簡略化された.csprojファイルに置き換えられました。開発者は使い慣れています)が、公開できるのは1つだけです。

デフォルトで.NET461のみを含むASP.NET Core Web Application(.NET Framework)プロジェクトを作成するだけです。

プロジェクトの公開方法など、私が気付いていない他の違いはありますか?.NET Frameworkではなく.NET Coreを対象とする場合、アプリはクロスプラットフォームにできず、アプリはLinux /ではなくWindowsでのみ実行できますマック。

個別のASP.NET Core Webアプリケーション(.NET Core)とASP.NET Core Webアプリケーション(.NET Framework)が存在する理由は、後者により、関数、パッケージ、または3番目を使用できるためです。 Windowsに依存し、同じ.NET Framework以上のパーティライブラリをマシンにインストールする必要があります。

前者には.NET Framework要件はありませんが、アプリをクロスプラットフォームにすることができ、アプリを公開すると、.NET Core dllファイルがすべて.NET Frameworkを回避する方法で公開ディレクトリに公開されます。 SOME_CODE] _インストール要件。

また、.NET Coreをターゲットにし、Windows固有の関数またはパッケージを使用すると、コンパイルエラーが発生するため、コンパイルに影響します。

.csprojを調整して、どちらか一方をターゲットにすることで、2つを簡単に切り替えることができます。

Microsoft Docs

次の場合、サーバーアプリケーションに.NET Coreを使用する必要があります。

  • クロスプラットフォームのニーズがあります。

  • マイクロサービスをターゲットにしています。

  • Dockerコンテナーを使用しています。

  • 高性能でスケーラブルなシステムが必要です。

  • アプリケーションごとに.NETバージョンを並べる必要があります。

次の場合、サーバーアプリケーションに.NET Frameworkを使用する必要があります。

  • 現在、アプリケーションは.NET Frameworkを使用しています(移行する代わりに拡張することをお勧めします)
  • .NET Coreでは使用できないサードパーティの.NETライブラリまたはNuGetパッケージを使用する必要があります。
  • .NET Coreでは利用できない.NETテクノロジーを使用する必要があります。
  • .NET Coreをサポートしないプラットフォームを使用する必要があります。

更新(2018/10/30)

発表済み リリース日が 2019 Q1 であるASP.Net Core 3は、.NET Coreおよびのみをサポートします.NET Frameworkではありません

今月初めに.NETブログで発表されたように、.NET Frameworkのインプレース更新の性質と制限の要望により、.NET Frameworkは、.NET Coreに搭載される新しいプラットフォームおよび言語機能の数が少なくなります。既存のアプリケーションを破壊する可能性のある変更があります。 ASP.NET Coreが前進する.NET Coreの改善を完全に活用できるように、ASP.NET Coreは3.0以降の.NET Coreでのみ実行されます。先に進むと、ASP.NET Coreを.NET Coreの一部と考えることができます。

.NET FrameworkでASP.NET Coreを利用しているお客様は、2.1 LTSリリースを使用して、完全にサポートされた方法で引き続き利用できます。 2.1のサポートとサービスは、.NETサポートポリシーに従って、少なくとも2021年8月21日(LTSリリースとしての宣言から3年後)まで継続されます。

42
devfric

さまざまなフレームワークを対象とするASP.NET Core Webアプリケーションを作成するときに、project.jsonファイルの違いを最初に確認してください。

difference between asp.net core with different frameworks

あなたの質問によると、ASP.NET Core Web Application(.NET Core)project.jsonのフレームワークをnet461のみを持つように変更して保存すると、パッケージが復元され、次のエラーが発生します。

enter image description here

Microsoft.NETCore.App依存関係を削除してファイルを保存すると、再び依存関係が復元され、エラーは発生しません。

最初の画像に気付いた場合、これは最終的に.NET Frameworkを使用したASP.NET Core Webアプリケーションになりました。

8
Nipuna

私も最初は混乱していました。主な違いは、ASP.NET Webアプリケーション(.NET Framework)が、私たちが使用している通常のasp.netであることです。これには、web_config、Global.asaxなどのApp_Startフォルダーが含まれます(MVC5のように、アイデアが得られます。)。

一方、ASP.NET Core Web Application(.NET Framework)はコアフレームワーク(MVC6)です。 (System.Webに依存しません)。真新しいproject.json .. startup.csおよびprogram.csなど...そして、.netフレームワークのすべての古いライブラリもサポートします。

4
pawan nepal

.netコアを使用すると、LinuxまたはMac OSでWebページアプリケーションを実行できますが、.netはウィンドウにのみ適しています。つまり、移植性が低くなります。