フィーチャーのイベント レシーバーは、次のいずれかのフィーチャー関連のイベントが SharePoint 内で発生した場合に実行されるメソッドです。
フィーチャーがインストールされた。
フィーチャーがアクティブ化された。
フィーチャーが非アクティブ化された。
フィーチャーが削除された。
このチュートリアルでは、SharePoint プロジェクト内のフィーチャーにイベント レシーバーを追加する方法について説明します。ここでは、次のタスクについて説明します。
フィーチャーのイベント レシーバーを備えた空のプロジェクトを作成する。
FeatureDeactivating メソッドを処理する。
お知らせリストに対し、SharePoint プロジェクトのオブジェクト モデルを使用してお知らせを追加する。
[!メモ]
お使いのマシンで、Visual Studio ユーザー インターフェイスの一部の要素の名前や場所が、次の手順とは異なる場合があります。これらの要素は、使用している Visual Studio のエディションや独自の設定によって決まります。詳細については、「Visual Studio の設定」を参照してください。
必須コンポーネント
このチュートリアルを実行するには、次のコンポーネントが必要です。
サポート対象エディションの Microsoft Windows および SharePoint。詳細については、「SharePoint ソリューションの開発要件」を参照してください。
Visual Studio
フィーチャーのイベント レシーバー プロジェクトの作成
まず、フィーチャーのイベント レシーバーを含んだプロジェクトを作成します。
フィーチャーのイベント レシーバーを備えたプロジェクトを作成するには
メニュー バーで、[新しいプロジェクト] のダイアログ ボックスを表示するに [ファイル]、新規、[プロジェクト] を選択します。
[SharePoint] のノードを Visual C# か **[Visual Basic]**の下に配置し、2010 年 のノードを選択します。
[テンプレート] のペインで、[SharePoint 2010 プロジェクト] テンプレートを選択します。
これらのプロジェクト テンプレートがないため、フィーチャーのイベント レシーバーには、この種類のプロジェクトを使用します。
[名前] ボックスに、FeatureEvtTest を入力し、を **[SharePoint カスタマイズ ウィザード]**を表示するに [OK] のボタンをクリックします。
[デバッグのサイトとセキュリティ レベルの指定] ページで、新しいカスタム フィールド項目の追加先となる SharePoint サーバー サイトの URL を入力するか、既定の場所 (http://<system name>/) を使用します。
[この SharePoint ソリューションの信頼レベル] のセクションでは、[ファーム ソリューションとして配置する] のオプション ボタンを選択します。
サンドボックス ソリューションとファーム ソリューションの違いの詳細については、「サンドボックス ソリューションの考慮事項」を参照してください。
[完了] のボタンを選択し、Feature1 という機能が [フィーチャー] のノードの下に表示されます。
フィーチャーへのイベント レシーバーの追加
今度は、フィーチャーにイベント レシーバーを追加し、フィーチャーが非アクティブ化されたときに実行されるコードを追加します。
フィーチャーにイベント レシーバーを追加するには
フィーチャー ノードのショートカット メニューを開き、機能を作成するに [フィーチャーの追加] を選択します。
[フィーチャー] のノードの下で、Feature1のショートカット メニューを開き、フィーチャーにイベント レシーバーを追加するに [イベント レシーバーの追加] を選択します。
これで、Feature1 にコード ファイルが追加されます。このファイルには、プロジェクトの開発言語に応じて、Feature1.EventReceiver.cs または Feature1.EventReceiver.vb という名前が付きます。
プロジェクトの Visual C#で書き込まれたら、既にないイベント レシーバーの先頭に次のコードを追加します:
using System;イベント レシーバー クラスはイベントとして機能する複数のコメントされたメソッドが含まれています。FeatureDeactivating メソッドを次の内容で置き換えます。
Public Overrides Sub FeatureDeactivating(ByVal properties As SPFeatureReceiverProperties) Try ' Get reference to SharePoint site. Dim site As SPSite = New SPSite("https://localhost") Dim web As SPWeb = site.OpenWeb("/") ' Get reference to Announcements list. Dim announcementsList As SPList = web.Lists("Announcements") ' Add new announcement to Announcements list. Dim oListItem As SPListItem = announcementsList.Items.Add oListItem("Title") = ("Deactivated Feature: " + properties.Definition.DisplayName) oListItem("Body") = (properties.Definition.DisplayName + (" was deactivated on: " + DateTime.Now.ToString)) oListItem.Update() Catch e As Exception Console.WriteLine(("Error: " + e.ToString)) End Try End Subpublic override void FeatureDeactivating(SPFeatureReceiverProperties properties) { try { // Get reference to SharePoint site. SPSite site = new SPSite("https://localhost"); SPWeb web = site.OpenWeb("/"); // Get reference to Announcements list. SPList announcementsList = web.Lists["Announcements"]; // Add new announcement to Announcements list. SPListItem oListItem = announcementsList.Items.Add(); oListItem["Title"] = "Deactivated Feature: " + properties.Definition.DisplayName; oListItem["Body"] = properties.Definition.DisplayName + " was deactivated on: " + DateTime.Now.ToString(); oListItem.Update(); } catch (Exception e) { Console.WriteLine("Error: " + e.ToString()); } }
フィーチャーのイベント レシーバーのテスト
次に、FeatureDeactivating メソッドによる SharePoint のお知らせリストへの出力がうまく作動するかどうかを、実際にフィーチャーを非アクティブ化してテストします。
フィーチャーのイベント レシーバーをテストするには
**[アクティブ化なし]**にプロジェクトの [アクティブな配置構成] のプロパティの値を設定します。
このプロパティを設定することによって、あえてフィーチャーが SharePoint でアクティブ化されないようにし、フィーチャーのイベント レシーバーをデバッグします。詳細については、「SharePoint ソリューションのデバッグ」を参照してください。
プロジェクトを実行し、SharePoint に配置するに [F5] のキーを選択します。
SharePoint Web ページの一番上に、[サイト アクション] のメニューを開き、**[サイトの設定]**を選択します。
[サイトの設定] のページの [サイト アクション] のセクションで、[サイト機能の管理] のリンクを選択します。
[フィーチャー] のページで、FeatureEvtTest Feature1 のフィーチャーの横にある [ライセンス認証] のボタンをクリックします。
[フィーチャー] のページで、非アクティブ化 のボタンを FeatureEvtTest Feature1 機能の横のをクリックし、次にフィーチャーを非アクティブ化するに [この機能を非アクティブ化] の確認] リンクをクリックします。
[ホーム] のボタンをクリックします。
フィーチャーが非アクティブ化されると、お知らせ リストにお知らせが表示されます。