web-dev-qa-db-ja.com

Visual Studio 2015の共有プロジェクトとクラスライブラリの違いは何ですか?

Visual Studio 2015とShared Projectの新機能をよく見ていましたが、クラスライブラリやポータブルクラスライブラリを使用するのとはどう違うのかわかりません。誰か説明できますか?

編集:共有プロジェクトはVisual Studio 2015の新機能で、ポータブルクラスライブラリとは異なります。私はポータブルクラスライブラリとは何かを理解しています。私が理解しようとしているのは、共有プロジェクトとクラスライブラリの違いです。下記のリンクを参照してください。

http://www.c-sharpcorner.com/UploadFile/7ca517/shared-project-an-impressive-features-of-visual-studio-201/

217
Indy411

共有プロジェクトとクラスライブラリの違いは、後者がコンパイルされ、再利用の単位がアセンブリであることです。

前者とは異なり、再利用の単位はソースコードであり、共有コードは共有プロジェクトを参照する各アセンブリに組み込まれています。

これは、特定のプラットフォームをターゲットにしながら、共有すべきコードがまだある別のアセンブリを作成したい場合に便利です。

こちら もご覧ください

共有プロジェクト参照はソリューションエクスプローラーの参照ノードの下に表示されますが、共有プロジェクト内のコードとアセットはメインプロジェクトにリンクされているファイルであるかのように扱われます。


以前のバージョンのVisual Studioでは1追加 - >既存の項目を選択してからリンクを選択することで、プロジェクト間でソースコードを共有できます。しかし、これはちょっと不格好で、それぞれ別々のソースファイルを個別に選択する必要がありました。複数の異なるプラットフォーム(iOS、Androidなど)のサポートへの移行により、彼らは共有プロジェクトの概念を追加することでプロジェクト間でソースを共有しやすくすることを決定しました。


1 この質問と私の答え(これまで)は、Shared ProjectsがVisual Studio 2015の新機能であることを示唆しています。実際、彼らは Visual Studio 2013 Update 2でデビューしました

217

私はこの ブログ からもう少し情報を見つけました。

  • クラスライブラリでは、コードがコンパイルされると、ライブラリごとにアセンブリ(dll)が生成されます。しかし、Shared Projectの場合、ヘッダー情報は含まれないため、Shared Project参照がある場合は、親アプリケーションの一部としてコンパイルされます。個別のDLLは作成されません。
  • 共有ライブラリではC#コードファイル、XAMLファイル、またはJavaScriptファイルなどのようなものを持つことができますが、クラスライブラリではC#コードを書くことのみが許可されています。
29
Indy411

短い違いは

1)SharedProjectがそうであるように、PCLは.NET Frameworkへのフルアクセスを持っていないでしょう。

2)プラットフォーム固有のコードの場合は#ifdef - PCLでは記述できません(#ifdefオプションはPCLでは使用できません。コンパイル時には、個別にコンパイルされるため) #ifdefが評価されるとき)それがどのプラットフォームになるのかわからない)共有プロジェクトとしてあなたができるところ。

3)プラットフォーム固有のコードは、PCLのInversion Of Controlを使用して実現されます。#ifdefステートメントを使用するのと同じように、Shared Projectでも同じことを実現できます。

共有プロジェクトとPCLの違いを説明する優れた記事は、次のリンクにあります。

http://hotkrossbits.com/2015/05/03/xamarin-forms-pcl-vs-shared-project/

他の人がすでに書いたように、要するに:

共有プロジェクト
コード(ファイル)レベルで再利用し、フォルダ構造とリソースも考慮に入れる

pcl
総会レベルでの再利用

私のためにここで主に答えから欠けていたものはPCLで利用可能な減少した機能性についての情報です:例としてあなたは限られたファイル操作を持っています.

さらに詳細に
共有プロジェクト
+複数のプラットフォームをターゲットにしている場合は#ifを使用できます(例:Xamarin iOS、Android、WinPhone)
+各対象プロジェクトで利用可能なすべてのフレームワーク機能(条件付きコンパイルが必要)
oコンパイル時に統合
- 結果として得られるアセンブリのサイズが少し大きい
- Visual Studio 2013 Update 2以上が必要です。

pcl
+共有アセンブリを生成します
+古いバージョンのVisual Studioで使用可能(2013年以前のUpdate 2)
o動的にリンクされている
- 限定機能(参照されているすべてのプロジェクトのサブセット)

あなたが選択をしている場合、私は共有プロジェクトに行くことをお勧めします、それは一般的により柔軟で強力です。あなたがあなたの要求を前もって知っていて、PCLがそれらを満たすことができるならば、あなたはその道を行くかもしれません。 PCLはまた、プラットフォーム固有のコードを書くことを許可しないことによって、より明確な分離を強制します(最初に共有アセンブリに入れるのは良い選択ではないかもしれません)。

両方の主な焦点は、複数のプラットフォームをターゲットにしている場合です。それ以外の場合は、通常のライブラリ/ dllプロジェクトのみを通常使用します。

14
Andreas Reiff

本から VS 2015正常に

共有プロジェクトでは、複数のプロジェクトタイプでコード、資産、およびリソースを共有できます。具体的には、次のプロジェクトタイプで共有プロジェクトを参照および消費できます。

  • コンソール、Windowsフォーム、およびWindows Presentation Foundation。
  • Windowsストア8.1アプリとWindows Phone 8.1アプリ。
  • Windows Phone 8.0/8.1 Silverlightアプリ。
  • ポータブルクラスライブラリ.

注: - 共有プロジェクトとPortable Class Library(PCL)の両方でコード、XAMLリソース、およびアセットを共有できますが、当然ながら以下のように要約される可能性があるいくつかの違いがあります。

  • 共有プロジェクトは再利用可能なアセンブリを生成しないため、ソリューション内からしか消費できません。
  • 共有プロジェクトは、プラットフォーム固有のコードをサポートしています。これは、コードが実行されているプラ​​ットフォームを検出するために使用できるWINDOWS_PHONE_APPやWINDOWS_APPなどの環境変数をサポートしているためです。
  • 最後に、共有プロジェクトはサードパーティのライブラリに依存することはできません。
  • 比較すると、PCLは再利用可能な.dllライブラリを生成し、サードパーティのライブラリに依存する可能性がありますが、プラットフォーム環境変数はサポートしていません。
8
Tilak

クラスライブラリは共有コンパイルコードです。

共有プロジェクトは共有ソースコードです。

5
Shadi Namrouti