汎用性のあるクラス ライブラリ

更新 : 2011 年 5 月

汎用性のあるクラス ライブラリ プロジェクトを使用すると、複数の .NET Framework プラットフォームで動作するマネージ アセンブリを作成してビルドできます。 共有ビジネス ロジックなど、多数のプロジェクトで共有するコードを含むクラスを作成し、そのクラスを異なる種類のプロジェクトから参照できます。

汎用性のあるクラス ライブラリ プロジェクトを使用すると、変更することなく .NET Framework、Silverlight、Windows Phone 7、または Xbox 360 プラットフォームで動作する、汎用的なアセンブリを作成できます。 汎用性のあるクラス ライブラリ プロジェクトを使用しない場合は、単一のプラットフォームを対象として作成した後、他のプラットフォーム用にクラス ライブラリを手作業で作り直す必要があります。 汎用性のあるクラス ライブラリ プロジェクトはこれらのプラットフォームのアセンブリのサブセットをサポートし、変更せずにこれらのプラットフォーム上で実行できるアセンブリの作成を可能にする Visual Studio テンプレートを提供します。

必要条件

汎用性のあるクラス ライブラリ プロジェクトを作成するには、以下のコンポーネントを示されている順序でインストールする必要があります。

  1. Visual Studio 2010 Service Pack 1 (SP1)

  2. Portable Library Tools

アセンブリ

汎用性のあるクラス ライブラリ プロジェクトでは以下のアセンブリを使用できます。

  • mscorlib.dll

  • System.dll

  • System.Core.dll

  • System.Xml.dll

  • System.ComponentModel.Composition.dll

  • System.Net.dll

  • System.Runtime.Serialization.dll

  • System.ServiceModel.dll

  • System.Xml.Serialization.dll

  • System.Windows.dll (Silverlight から)

ただし、これらのアセンブリのすべてがあらゆるプラットフォームでサポートされているわけではありません。 汎用性のあるクラス ライブラリ プロジェクトでは、対象とするプラットフォームをユーザーが指定すると、そのプラットフォームでサポートされるアセンブリだけがプロジェクトで参照されます。 対象のプラットフォームでサポートされていないアセンブリを参照しようとすると、Visual Studio で非互換性の警告が表示されます。 コア アセンブリ (mscorlib.dll、System.dll、System.Core.dll、System.Xml.dll) は、すべてのプラットフォームでサポートされます。

次の表では、各プラットフォームでサポートされているアセンブリを示します。

機能

アセンブリ

.NET Framework 4

Silverlight

Windows Phone 7

Xbox 360

コア

mscorlib.dll、System.dll、System.Core.dll、System.Xml.dll

MEF (Managed Extensibility Framework)

System.ComponentModel.Composition.dll

×

×

Network Class Library (NCL)

System.Net.dll

×

シリアル化

System.Runtime.Serialization.dll

×

Windows Communication Foundation (WCF)

System.ServiceModel.dll

×

XML シリアル化

System.Xml.Serialization.dll

×

ビュー モデルのサポート

System.Windows.dll (Silverlight から)

×

×

汎用性のあるクラス ライブラリ プロジェクトでは、プラットフォームの組み合わせを対象とすることができます。 次の表では、プラットフォームの組み合わせに対してサポートされる機能を示します。

プラットフォーム

サポート

Silverlight、Windows Phone 7

MEF を除くすべて

.NET Framework 4、Silverlight

ビュー モデル サポートを除くすべて

.NET Framework 4、Windows Phone 7

ビュー モデルのサポートと MEF を除くすべて

.NET Framework 4、Silverlight、Windows Phone 7

ビュー モデルのサポートと MEF を除くすべて

Xbox 360 と他のすべてのプラットフォーム

コアのみ

参照ドキュメントでのサポートされるメンバーの検索

.NET Framework クラス ライブラリの参照トピックでは、汎用性のあるクラス ライブラリ プロジェクトでサポートされるメンバーを確認できます。 クラスのメンバーの表で、サポートされるメンバーの横には次の汎用性のあるクラス ライブラリ アイコンが表示されます。

汎用性のあるライブラリによるサポート

また、参照トピックの「バージョン情報」セクションでは、型またはメンバーが汎用性のあるクラス ライブラリ プロジェクトでサポートされていることが示されています。

ビュー モデル パターンのサポート

Silverlight と Windows Phone 7 を対象とする場合は、ソリューションでビュー モデル パターンを実装できます。 このパターンを実装するクラスは、Silverlight の System.Windows.dll アセンブリにあります。 System.Windows.dll アセンブリは、.NET Framework 4 または Xbox 360 を対象とする汎用性のあるクラス ライブラリ プロジェクトの作成時にはサポートされません。

このアセンブリには次のようなクラスがあります。

.NET Framework 4 にもこれらのクラスが用意されていますが、System.Windows.dll 以外のアセンブリで実装されています。 汎用性のあるクラス ライブラリ プロジェクトでこれらのクラスを使用するには、.NET Framework 4 のドキュメントに示されているアセンブリではなく、System.Windows.dll を参照する必要があります。

汎用性のあるクラス ライブラリ プロジェクトの作成

汎用性のあるクラス ライブラリ プロジェクトを作成するには、Visual Studio 2010 で新しいプロジェクトを作成し、Visual C# または Visual Basic でポータブル クラス ライブラリ テンプレートを選択します。 このテンプレートが表示されない場合は、Portable Library Tools がインストールされていることを確認してください。

汎用性のあるライブラリ プロジェクトの選択

対象とするプラットフォームの選択

既定では、汎用性のあるクラス ライブラリ プロジェクトは以下のプラットフォームを対象とします。

  • .NET Framework 4

  • Silverlight 4

  • Silverlight for Windows Phone 7

プロジェクトは、これらのプラットフォームでサポートされるアセンブリのみを参照します。 対象とするプラットフォームを選択するには、ソリューション エクスプローラーで、汎用性のあるクラス ライブラリのプロジェクト名を右クリックし、[プロパティ] をクリックします。

プロジェクトのプロパティ ページでは、現在対象になっているプラットフォームが示されます。

プロジェクト プロパティ

対象プラットフォームを追加または削除するには、[変更] をクリックします。

ターゲットの変更

対象プラットフォームを変更すると、プロジェクトで参照されているアセンブリが、選択したプラットフォームでサポートされるアセンブリのセットに合わせて変更されます。 選択したプラットフォームのいずれかでサポートされていないアセンブリをプロジェクトで参照している場合は、そのアセンブリの参照を削除するか、または対象のプラットフォームを変更する必要があります。 ソリューション エクスプローラーでは、サポートされていないアセンブリは感嘆符 (!) で示されます。 次の図は、Xbox 360 プラットフォームを対象プラットフォームに追加したときの、サポートされないアセンブリの警告です。

警告

汎用性のあるクラス ライブラリの使用

汎用性のあるクラス ライブラリ プロジェクトをビルドした後は、単純に、汎用性のあるクラス ライブラリ プロジェクトに依存する他のプロジェクトからの参照を追加します。 プロジェクトを参照することも、アクセスする必要のあるクラスを含む特定のアセンブリを参照することもできます。

依存関係の作成

汎用性のあるクラス ライブラリ アプリケーションを実行するには、.NET Framework 4 の更新プログラムをコンピューターにインストールする必要があります。 この更新プログラムは Visual Studio 2010 SP1 で自動的にインストールされるので、アプリケーションの開発に使用したコンピューターでは、何も変更せずに汎用性のあるクラス ライブラリ アプリケーションを実行できます。 他のコンピューターでアプリケーションを実行するには、更新プログラムを手動でインストールします。

汎用性のあるクラス ライブラリ アセンブリを参照する .NET Framework 4 アプリケーションを配置するときは、.NET Framework 4 の更新プログラムに対する依存関係を指定する必要があります。 この依存関係を指定することで、更新プログラムがアプリケーションと共に確実にインストールされます。

  • ClickOnce 配置で依存関係を作成するには、ソリューション エクスプローラーで、発行するプロジェクトのプロジェクト ノードをクリックします (これは汎用性のあるクラス ライブラリ プロジェクトを参照するプロジェクトです)。 [プロジェクト] メニューの [プロパティ] をクリックし、[発行] タブをクリックします。 [発行] ページで、[必須コンポーネント] をクリックします。 必要条件として .NET Framework 4 更新プログラムを選択します。

  • セットアップ プロジェクトで依存関係を作成するには、ソリューション エクスプローラーで、セットアップ プロジェクトをクリックします。 [プロジェクト] メニューの [プロパティ] をクリックし、[必須コンポーネント] をクリックします。 必要条件として .NET Framework 4 更新プログラムを選択します。

.NET Framework アプリケーションの配置の詳細については、「.NET Framework 配置ガイド (開発者向け)」を参照してください。

Silverlight での配置

Silverlight ベースのアプリケーションと一緒に汎用性のあるクラス ライブラリ アセンブリを配置するときは、アプリケーションに必要な最低のランタイム バージョンが Version 4.0.60129.0 以降に設定されていることを確認する必要があります。 Silverlight ベースのアプリケーションをホストする Web ページに <param name="minRuntimeVersion" value="4.0.60129.0" /> を含めることで、minRuntimeVersion パラメーター値を設定します。

<div id="silverlightControlHost">
    <object data="data:application/x-silverlight-2," 
           type="application/x-silverlight-2" width="100%" height="100%">
    <param name="source" value="ClientBin/SilverlightApplication.xap"/>
    <param name="onError" value="onSilverlightError" />
    <param name="background" value="white" />
    <param name="minRuntimeVersion" value="4.0.60129.0" />
    <param name="autoUpgrade" value="true" />
    <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=4.0.50826.0" 
             style="text-decoration:none">
      <img src=http://go.microsoft.com/fwlink/?LinkId=161376
             alt="Get Microsoft Silverlight" style="border-style:none"/>
    </a>
  </object>
   <iframe id="_sl_historyFrame" 
              style="visibility:hidden;height:0px;width:0px;border:0px">
   </iframe>
</div>

汎用性のあるクラス ライブラリでの API の違い

サポートされるすべてのプラットフォームで汎用性のあるクラス ライブラリ アセンブリの互換性を確保するために、汎用性のあるクラス ライブラリでは一部のメンバーが若干変更されています。 変更されたメンバーおよび変更の内容については、「汎用性のあるクラス ライブラリでの API の相違点」を参照してください。

参照

その他の技術情報

汎用性のあるクラス ライブラリでの API の相違点

履歴の変更

日付

履歴

理由

2011 年 5 月

ビュー モデル パターンのサポートと依存関係の作成に関する情報を追加。

情報の拡充

2011 年 3 月

トピックを追加

情報の拡充