プロジェクト項目でのパッケージ化と配置の情報を提供する

Visual Studio のすべての SharePoint プロジェクト項目には、プロジェクトを SharePoint に配置するときに追加データを提供するために使用できるプロパティがあります。 選択できるプロパティは次のとおりです。

  • 機能プロパティ

  • フィーチャー レシーバー

  • プロジェクト出力参照

  • 安全なコントロール エントリ

    これらのプロパティは、[プロパティ] ウィンドウに表示されます。

機能のプロパティ

フィーチャーによって使用されるデータを指定するには、フィーチャー プロパティ プロパティを使用します。 フィーチャー プロパティのデータは、フィーチャーが SharePoint に配置されるときに一緒に含まれる (キー/値ペアとして格納される) 一連の値です。 フィーチャーが配置されると、そのプロパティ値にコードでアクセスできるようになります。

フィーチャー プロパティの値をプロジェクト項目に追加すると、その値は項目のフィーチャーのマニフェストに要素として追加されます。 たとえば、Business Data Connectivity (BDC) モデル プロジェクトでは、ModelFileName フィーチャー プロパティが次のように表示されます。

<Property Key="ModelFileName" Value="BdcModel1\BdcModel1.bdcm" />

フィーチャー プロパティの値を設定すると、それがプロジェクトの .spdata ファイルに FeatureProperty 要素として追加されます。 SharePoint でのプロパティへのアクセスの詳細については、「SPFeaturePropertyCollection クラス」を参照してください。

すべてのプロジェクト項目の同じフィーチャー プロパティ値は、フィーチャー マニフェストにマージされます。 ただし、2 つの異なるプロジェクト項目で同じフィーチャー プロパティ キーが指定され、その値が一致しない場合は、検証エラーが発生します。

フィーチャー プロパティをフィーチャー ファイル (.feature) に直接追加するには、Visual Studio SharePoint オブジェクト モデルの Add メソッドを呼び出します。 この方法を使用する場合は、フィーチャー プロパティに同じフィーチャー プロパティ値を追加する場合と同じルールが、フィーチャー ファイルに直接追加されたプロパティにも適用されることにご注意ください。

フィーチャー レシーバー

フィーチャー レシーバーは、プロジェクト項目に含まれているフィーチャーで特定のイベントが発生した場合に実行されるコードです。 たとえば、フィーチャーをインストール、アクティブ化、またはアップグレードしたときに実行されるフィーチャー レシーバーを定義できます。 フィーチャー レシーバーを追加する方法の 1 つは、「チュートリアル: フィーチャー イベント レシーバーを追加する」の説明に従って、それをフィーチャーに直接追加することです。 もう 1 つの方法は、フィーチャー レシーバー クラスの名前とアセンブリをフィーチャー レシーバー プロパティで参照することです。

ダイレクト メソッド

フィーチャー レシーバーをフィーチャーに直接追加すると、ソリューション エクスプローラーの [フィーチャー] ノードの下にコード ファイルが配置されます。 SharePoint ソリューションをビルドすると、このコードがアセンブリにコンパイルされ、SharePoint に配置されます。 既定では、レシーバー アセンブリおよびレシーバー クラス フィーチャー プロパティでクラス名とアセンブリが参照されます。

Reference メソッド

フィーチャー レシーバーを追加するもう 1 つの方法は、プロジェクト項目のフィーチャー レシーバー プロパティを使用してフィーチャー レシーバー アセンブリを参照することです。 フィーチャー レシーバー プロパティ値には、アセンブリクラス名という 2 つのサブプロパティがあります。 アセンブリには完全修飾された "厳密な" 名前を使用する必要があり、クラス名は完全な型名である必要があります。 詳細については、「厳密な名前付きアセンブリ」を参照してください。 ソリューションを SharePoint に配置した後、このフィーチャーでは、参照されているフィーチャー レシーバーを使用してフィーチャー イベントを処理します。

ソリューションのビルド時に、フィーチャーとそのプロジェクトのフィーチャー レシーバー プロパティの値が結合され、SharePoint ソリューション (.wsp) ファイルのフィーチャー マニフェスト内の Feature 要素の ReceiverAssembly および ReceiverClass 属性が設定されます。 したがって、プロジェクト項目とフィーチャーの両方のアセンブリおよびクラス名プロパティの値が指定されている場合は、プロジェクト項目とフィーチャーのプロパティ値が一致する必要があります。 値が一致しない場合は、検証エラーが表示されます。 フィーチャーで使用されているものとは異なるフィーチャー レシーバー アセンブリをプロジェクト項目で参照する必要がある場合は、それを別のフィーチャーに移動します。

サーバー上にまだ存在しないフィーチャー レシーバー アセンブリを参照する場合は、アセンブリ ファイル自体もパッケージに含める必要があります。Visual Studio ではこれを自動的に追加しません。 このフィーチャーを配置すると、アセンブリ ファイルはシステムのグローバル アセンブリ キャッシュ (GAC) または SharePoint 物理ディレクトリの Bin フォルダーにコピーされます。 詳細については、「方法: アセンブリを追加および削除する」を参照してください。

フィーチャー レシーバーの詳細については、「フィーチャー イベント レシーバー」と「フィーチャー イベント」を参照してください。

プロジェクト出力参照

プロジェクト出力参照プロパティでは、プロジェクト項目の実行に必要な依存関係 (アセンブリなど) を指定します。 たとえば、ソリューションに BDC プロジェクトとクラス プロジェクトがあるとします。 BDC プロジェクトに、クラス プロジェクトによって出力されるアセンブリに対する依存関係がある場合は、BDC プロジェクトのプロジェクト出力参照プロパティでアセンブリを参照できます。 BDC プロジェクトをパッケージ化すると、依存アセンブリがパッケージに含められます。

通常、プロジェクト出力参照はアセンブリですが、場合によっては (Silverlight プロジェクトなど)、他の種類のファイルにすることもできます。

詳細については、「方法: プロジェクト出力参照を追加する」を参照してください。

安全なコントロール エントリ

SharePoint には、信頼されていないユーザーによる特定のコントロールへのアクセスを制限するため、安全なコントロール エントリと呼ばれるセキュリティ メカニズムが用意されています。 SharePoint では、設計上、信頼されていないユーザーが SharePoint サーバーに ASPX ページをアップロードして作成できます。 これらのユーザーがアンセーフ コードを ASPX ページに追加できないようにするため、SharePoint では "安全なコントロール" へのアクセスが制限されています。 安全なコントロールは、セキュリティで保護されるとして指定され、サイト上の任意のユーザーが使用できる ASPX コントロールと Web パーツです。 詳細については、「手順 4: Web パーツを安全な コントロール リストに追加する」を参照してください。

Visual Studio のすべての SharePoint プロジェクト項目には、安全スクリプトに対して安全の 2 つのブール値サブプロパティを持つ安全なコントロール エントリというプロパティがあります。 安全プロパティでは、信頼されていないユーザーがコントロールにアクセスできるかどうかを指定します。 スクリプトに対して安全プロパティでは、信頼されていないユーザーがコントロールのプロパティを表示および変更できるかどうかを指定します。

安全なコントロール エントリは、アセンブリごとに参照されます。 プロジェクトのアセンブリに安全なコントロール エントリを追加するには、プロジェクト項目の安全なコントロール エントリ プロパティにそれらを入力します。 ただし、パッケージにアセンブリを追加するときに、パッケージ デザイナー[詳細設定] タブでプロジェクトのアセンブリに安全なコントロール エントリを追加することもできます。 詳細については、「方法: コントロールを安全なコントロールとしてマークする」または「Web パーツ アセンブリを安全なコントロールとして登録する」を参照してください。

安全なコントロールの XML エントリ

安全なコントロール エントリをプロジェクト項目またはプロジェクトのアセンブリに追加すると、パッケージ マニフェストに次の形式で参照が書き込まれます。

<Assemblies>
    <Assembly Location="<assembly name>.dll"
      DeploymentTarget="<'GlobalAssemblyCache' or 'WebApplication'">>
        <SafeControls>
            <SafeControl Assembly="<assembly name>.dll" Namespace=
              "<SharePoint project name>" Safe="<true/false>"
                TypeName="<control name>"
                SafeAgainstScript="<true/false>" />
        </SafeControls>
    </Assembly>
</Assemblies>