サンドボックス ソリューションでフィーチャー レシーバーを作成および展開する

最終更新日: 2011年4月14日

適用対象: SharePoint Foundation 2010

SharePoint Online で使用可能

このトピックでは、サンドボックス ソリューションでフィーチャー レシーバーを作成および展開する方法について説明します。

フィーチャー レシーバーを作成するには

  1. Microsoft Visual Studio で空の SharePoint プロジェクトを開始します。メッセージが表示されたら、そのプロジェクトをサンドボックス ソリューションにします。

  2. ソリューション エクスプローラーで [Features] フォルダーを右クリックし、[フィーチャーの追加] をクリックします。

  3. フィーチャーを右クリックし、[イベント レシーバーの追加] をクリックします。

  4. 前の手順で作成した .cs ファイルまたは .vb ファイルを開きます。

  5. イベント処理ロジックを使用して、必要に応じてファイル内のイベント ハンドラーをコメント解除および上書きします。一般的に、FeatureActivated ハンドラーを上書きしたら、FeatureDeactivating ハンドラーも上書きして、自分のコードが FeatureActivated ハンドラーで行ったことを無効にする必要があります。同様に、FeatureInstalled ハンドラーを上書きしたら、FeatureUninstalling ハンドラーも上書きして、自分のコードが FeatureInstalled で行ったことを無効にする必要があります。

    重要重要

    使用しているコードは、サンドボックス ソリューションで実行されるすべてのコードの制限に従う必要があります。これは、ファーム ソリューションのフィーチャー レシーバーとサンドボックス ソリューションのフィーチャー レシーバーの間の唯一の違いです。たとえば、使用しているコードはファーム サーバーのファイル システムにアクセスできません。また、コードが実行されているサイト コレクション外のアイテムにもアクセスできません。

    たとえば、FeatureActivated の次のオーバーライドでは、サイト コレクションのルート Web サイトのタイトルに文字列が追加されます。また、FeatureDeactivating のオーバーライドにより、この変更が無効になります。

    public override void FeatureActivated(SPFeatureReceiverProperties properties)
    {
        SPWeb website = (SPWeb)properties.Feature.Parent;
        SPSite siteCollection = website.Site;
        siteCollection.RootWeb.Title = siteCollection.RootWeb.Title + " with Ketchup!"; 
        siteCollection.RootWeb.Update();
    }
    
    public override void FeatureDeactivating(SPFeatureReceiverProperties properties)
    {
        SPWeb website = (SPWeb)properties.Feature.Parent;
        SPSite siteCollection = website.Site;
        siteCollection.RootWeb.Title = siteCollection.RootWeb.Title.Replace(" with Ketchup!", string.Empty);
        siteCollection.RootWeb.Update();
    }
    
  6. 開発 SharePoint インストールに構築、パッケージ化、および展開します。テストおよびデバッグの完了時に、サンドボックス ソリューション パッケージ (.wsp ファイル) をサイト コレクション管理者が利用できるようにします。

サンドボックス ソリューションの展開

サイト コレクション管理者は、サンドボックス ソリューションをサイト コレクションのソリューション ギャラリーにインストールできます。この処理は、2 つの手順で実行されます。まず、ソリューション パッケージがギャラリーにアップロードされ、その後、展開されます。この展開処理は、サンドボックス ソリューションでは "アクティブ化" と呼ばれ、パッケージ内のすべてのフィーチャーを自動的にアクティブ化します。ソリューションの検証機能がサイト コレクションに登録されている場合は、その機能もアクティブ化ステージで実行されます。ソリューションが検証を通過し、ファーム管理者によってブロックされていない場合、そのソリューションはサイト コレクションで使用する準備ができています。

関連項目

概念

サンドボックス ソリューションで実装できるコンポーネント

サンドボックス ソリューションに対する制限