逐步解說:新增功能事件接收器

功能事件接收器是在 SharePoint 中發生下列其中一個與功能的相關事件時執行的方法:

  • 安裝功能。

  • 啟動功能。

  • 停用功能。

  • 移除功能。

本逐步解說示範如何將事件接收器加入至 SharePoint 專案中的功能。其中將示範下列工作:

  • 建立具有功能事件接收器的空專案。

  • 處理 FeatureDeactivating 方法。

  • 使用 SharePoint 專案物件模型將公告加入至公告清單。

注意事項注意事項

您的電腦可能會在下列說明中,以不同名稱或位置顯示某些 Visual Studio 使用者介面項目。您所擁有的 Visual Studio 版本以及使用的設定會決定這些項目。如需詳細資訊,請參閱 Visual Studio 設定

必要條件

您需要下列元件才能完成此逐步解說:

建立功能事件接收器專案

首先,建立專案來包含功能事件接收器。

若要建立具有功能事件接收器的專案

  1. 在功能表列上的 [],然後選取 [檔案], [新增], [專案] 顯示 [新增專案] 對話方塊。

  2. 展開 [SharePoint] 節點在 [Visual C#] 或 [Visual Basic],然後選取 [2010 年] 節點。

  3. 在 [樣板] 窗格中,選取 [SharePoint 2010 專案] 範本。

    ,因為它們沒有專案範本,您對功能事件接收器使用這種專案類型。

  4. 在 [名稱] 方塊中,輸入 FeatureEvtTest,然後選取 [確定] 按鈕顯示 [SharePoint 自訂精靈]。

  5. 在 [指定網站和安全性層級進行偵錯] 頁面上,輸入您想要加入新自訂欄位項目之 SharePoint 伺服器網站的 URL,或使用預設位置 (http://<system name>/)。

  6. 在 [此 SharePoint 方案的信任層級為何?] 區段中,選取 [部署為陣列方案] 選項按鈕。

    如需沙箱化方案與陣列方案的比較的詳細資訊,請參閱沙箱化方案考量

  7. 選取 [完成] 按鈕,並注意名為 Feature1 的功能會出現在 [功能] 節點下。

將事件接收器加入至功能

接下來,將事件接收器加入至功能,然後加入停用功能時執行的程式碼。

若要將事件接收器加入至功能

  1. 開啟功能節點的捷徑功能表,然後選取 [加入功能] 建立功能。

  2. 在 [功能] 節點底下,開啟 [Feature1。] 的捷徑功能表,然後選取 [加入事件接收器] 將事件接收器加入至功能。

    這會在 Feature1 底下加入程式碼檔。在此範例中,檔案名稱會是 Feature1.EventReceiver.cs 或 Feature1.EventReceiver.vb,視專案的開發語言而定。

  3. 如果專案在 Visual C#寫入,請將下列程式碼加入至事件接收器頂端,如果沒有的話):

    using System;
    
  4. 事件接收器類別包含做為事件的幾個標記為註解的方法。以下列程式碼取代 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 Sub
    
    public 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 公告清單。

若要測試功能事件接收器

  1. 將專案的 [現用部署組態] 屬性的值設定為 [無啟用]。

    設定此屬性可防止功能在 SharePoint 中啟動,並讓您對功能事件接收器偵錯。如需詳細資訊,請參閱對 SharePoint 方案進行偵錯

  2. 選取 [F5] 索引鍵執行專案並將它部署至 SharePoint。

  3. 在 SharePoint 網頁的頂端,請開啟 [設置動作] 功能表,然後選取 [設置設定]。

  4. 在 [設置設定] 網頁的 [設置動作] 區段底下,選取 [管理網站功能。] 連結。

  5. 在 [功能] 頁面,請在 [FeatureEvtTest Feature1。] 功能旁的 [啟動] 按鈕。

  6. 在 [功能] 頁面,請在 [FeatureEvtTest Feature1。] 功能旁的 [停用。] 按鈕,然後選取 [停用此功能] 確認連結來停用功能。

  7. 選取 [首頁] 按鈕。

    請注意,在停用功能之後,一項公告會出現在 [公告] 清單中。

請參閱

工作

HOW TO:建立事件接收器

其他資源

開發 SharePoint 方案