web-dev-qa-db-ja.com

ASP.NET 5クラスライブラリプロジェクトを作成する理由

「ASP.NET 5クラスライブラリ」(vNext)C#プロジェクトがASP.NETとどう関係するのかを理解しようとしています。通常のC#「クラスライブラリ」プロジェクトではなく、このテンプレートを使用してプロジェクトを作成する理由は何ですか?

.csprojファイルなどではなく、project.jsonファイルなどの新機能が気に入っていますが、ASP.NETまたはIISなど。これは単なるビジネスロジックレイヤーのプロジェクトです。新しいWebApi ASP.NET Webサイトは最終的にこのプロジェクトを参照しますが、現時点では関係ありません。

それは単にひどい名前ですか? 「vNextクラスライブラリ」と呼ばれるだけで、Webアプリのようなアイコンを使用しないでください。

97
mkaj

ASP.NET 5クラスライブラリプロジェクトを作成する理由

ASP.NET 5クラスライブラリプロジェクト(。kproj)には、クラスライブラリプロジェクト(。csproj)よりも多くの利点があります。

  1. ASP.NET 5クラスライブラリは、aspnet50aspnetcore50net45、およびその他のさまざまなポータブルクラスライブラリのバリエーションなど、複数のターゲットへのプロジェクトのクロスコンパイルを簡単にサポートします。これには、どのAPIがどのターゲットで利用可能かを通知するIntellisenseの豊富なVisual Studioサポートが含まれます。
  2. NuGetパッケージは自動的に作成されますが、これはクラスライブラリで行うのが非常に一般的なことです。
  3. ファイルシステムが変更されたときにソリューションエクスプローラーを自動的に更新するなど、生産性が向上します。 * .csprojファイル内の競合する変更をマージしようとすると、ソース管理の競合が少なくなります。
  4. クロスプラットフォームでコンパイル可能(一部はMSBuildに依存しないため)

* .csprojプロジェクトを* .kprojプロジェクトから参照できます(これはVisual Studio 2015の新しいプレビューで非常に簡単になりました)が、いくつかの手動手順で常に可能でした。

名前に「ASP.NET」が含まれているのはなぜですか?

名前の通り、それはまもなく対処される歴史の遺物です。新しいプロジェクトタイプは、ASP.NET 5アプリケーションをはるかに超えて便利です。 Visual Studioの今後のプレビューで新しい名前が表示される予定です。

  • .NETコンソールアプリケーション(クロスプラットフォーム)
  • .NETクラスライブラリ(クロスプラットフォーム)

更新日2015年5月13日

Visual Studio 2015 RC のリリースにより、更新されたプロジェクトテンプレート名を確認できます。

  • クラスライブラリ(パッケージ)
  • コンソールアプリケーション(パッケージ)

これらは、project.jsonファイルと.NET実行環境(DNX)を使用して、プロジェクトをビルド、実行、およびパッケージ化(NuGetパッケージに)します。

これらのプロジェクトテンプレートは、[Web]ノードの下の[新しいプロジェクト]ダイアログに引き続き表示されますが、メインの[Visual C#]ノードにも表示されます。

VS2015 RC Class Lib / Console App templates

100
Eilon

これは興味深い観察です。現在のテンプレートは、ASP.NET 5ランタイムと互換性のあるクラスライブラリを生成します。通常のC#クラスライブラリからは取得できません。

この設計質問を追跡するために次の問題を提出しました- https://github.com/aspnet/Home/issues/281

10
Yishai Galatzer

私が理解していることから、ASP.NET 5クラスライブラリプロジェクトの最終製品は(.dllアセンブリではなく)NuGetパッケージであることがわかります。

Visual Studio 2015でプロジェクトを右クリックし、[発行...]オプションを選択すると、NuGetパッケージを生成できます。または、コマンドラインで「KPM pack」を使用できます。

また、ASP.NET 5 Coreランタイムを使用して、ライブラリがクロスプラットフォームで実行できるようにします。

3
Thomas Kadlec