.NET Core RC2のリリースにより、Microsoftは3つのWebアプリケーションテンプレートを作成しました。
新しいコア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)プロジェクトを作成するだけです。
プロジェクトの公開方法など、私が知らない他の違いはありますか?
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つを簡単に切り替えることができます。
次の場合、サーバーアプリケーションに.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年後)まで継続されます。
さまざまなフレームワークを対象とするASP.NET Core Webアプリケーションを作成するときに、project.jsonファイルの違いを最初に確認してください。
あなたの質問によると、ASP.NET Core Web Application(.NET Core)project.jsonのフレームワークをnet461
のみを持つように変更して保存すると、パッケージが復元され、次のエラーが発生します。
Microsoft.NETCore.App依存関係を削除してファイルを保存すると、再び依存関係が復元され、エラーは発生しません。
最初の画像に気付いた場合、これは最終的に.NET Frameworkを使用したASP.NET Core Webアプリケーションになりました。
私も最初は混乱していました。主な違いは、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フレームワークのすべての古いライブラリもサポートします。
.netコアを使用すると、LinuxまたはMac OSでWebページアプリケーションを実行できますが、.netはウィンドウにのみ適しています。つまり、移植性が低くなります。