Walkthrough: Add feature event receivers
Applies to: Visual Studio Visual Studio for Mac
Note
This article applies to Visual Studio 2017. If you're looking for the latest Visual Studio documentation, see Visual Studio documentation. We recommend upgrading to the latest version of Visual Studio. Download it here
Feature event receivers are methods that execute when one of the following feature-related events occurs in SharePoint:
A feature is installed.
A feature is activated.
A feature is deactivated.
A feature is removed.
This walkthrough demonstrates how to add an event receiver to a feature in a SharePoint project. It demonstrates the following tasks:
Creating an empty project with a feature event receiver.
Handling the FeatureDeactivating method.
Using the SharePoint project object model to add an announcement to the Announcements list.
Note
Your computer might show different names or locations for some of the Visual Studio user interface elements in the following instructions. The Visual Studio edition that you have and the settings that you use determine these elements. For more information, see Personalize the IDE.
Prerequisites
You need the following components to complete this walkthrough:
Supported editions of Microsoft Windows and SharePoint.
Visual Studio.
Create a feature event receiver project
First, create a project to contain the feature event receiver.
To create a project with a feature event receiver
On the menu bar, choose File > New > Project to display the New Project dialog box.
Expand the SharePoint node under either Visual C# or Visual Basic, and then choose the 2010 node.
In the Templates pane, choose the SharePoint 2010 Project template.
You use this project type for feature event receivers because they have no project template.
In the Name box, enter FeatureEvtTest, and then choose the OK button to display the SharePoint Customization Wizard.
On the Specify the site and security level for debugging page, enter the URL for the SharePoint server site to which you want to add the new custom field item, or use the default location (http://<system name>/).
In the What is the trust level for this SharePoint solution? section, choose the Deploy as a farm solution option button.
For more information about sandboxed solutions versus farm solutions, see Sandboxed solution considerations.
Choose the Finish button, and then notice that a feature that's named Feature1 appears under the Features node.
Add an event receiver to the feature
Next, add an event receiver to the feature and add code that executes when the feature is deactivated.
To add an event receiver to the feature
Open the shortcut menu for the Features node, and then choose Add Feature to create a feature.
Under the Features node, open the shortcut menu for Feature1, and then choose Add Event Receiver to add an event receiver to the feature.
This adds a code file under Feature1. In this case, it is named either Feature1.EventReceiver.cs or Feature1.EventReceiver.vb, depending on your project's development language.
If your project is written in Visual C#, add the following code at the top of the event receiver if it is not already there:
using System;
The event receiver class contains several commented-out methods that act as events. Replace the FeatureDeactivating method with the following:
Public Overrides Sub FeatureDeactivating(ByVal properties As SPFeatureReceiverProperties) Try ' Get reference to SharePoint site. Dim site As SPSite = New SPSite("http://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("http://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()); } }
Test the feature event receiver
Next, deactivate the feature to test whether the FeatureDeactivating method outputs an announcement to the SharePoint Announcements list.
To test the feature event receiver
Set the value of the project's Active Deployment Configuration property to No Activation.
Setting this property prevents the feature from activating in SharePoint and lets you debug feature event receivers. For more information, see Debug SharePoint solutions.
Choose the F5 key to run the project and deploy it to SharePoint.
At the top of the SharePoint Web page, open the Site Actions menu, and then choose Site Settings.
Under the Site Actions section of the Site Settings page, choose the Manage site features link.
On the Features page, choose the Activate button next to the FeatureEvtTest Feature1 Feature.
On the Features page, choose the Deactivate button next to the FeatureEvtTest Feature1 Feature, and then choose the Deactivate this feature confirmation link to deactivate the Feature.
Choose the Home button.
Notice that an announcement appears in the Announcements list after the feature is deactivated.