연습: 기능 이벤트 수신자 추가
기능 이벤트 수신자는 다음과 같은 기능 관련 이벤트 중 하나가 SharePoint에서 발생할 때 실행되는 메서드입니다.
기능이 설치된 경우
기능이 활성화된 경우
기능이 비활성화된 경우
기능이 제거된 경우
이 연습에서는 SharePoint 프로젝트의 기능에 이벤트 수신자를 추가하는 방법을 보여 줍니다. 다음과 같은 작업을 보여 줍니다.
기능 이벤트 수신자가 포함된 빈 프로젝트 만들기
FeatureDeactivating 메서드 처리
SharePoint 프로젝트 개체 모델을 사용하여 알림 목록에 알림 추가
참고
다음 지침처럼 컴퓨터에서 Visual Studio 사용자 인터페이스 요소 일부에 대한 이름이나 위치를 다르게 표시할 수 있습니다. 이러한 요소는 사용하는 Visual Studio 버전 및 설정에 따라 결정됩니다. 자세한 내용은 Visual Studio 설정을 참조하십시오.
사전 요구 사항
이 연습을 완료하려면 다음 구성 요소가 필요합니다.
지원되는 Microsoft Windows 및 SharePoint 버전. 자세한 내용은 SharePoint 솔루션 개발 요구 사항을 참조하십시오.
Visual Studio 2010.
기능 이벤트 수신자 프로젝트 만들기
먼저 기능 이벤트 수신자가 포함될 프로젝트를 만듭니다.
기능 이벤트 수신자가 포함된 프로젝트를 만들려면
파일 메뉴에서 새로 만들기를 가리킨 다음 새 프로젝트를 선택하여 새 프로젝트 대화 상자를 표시합니다.
Visual C# 또는 Visual Basic 아래의 SharePoint 노드를 확장한 다음 2010을 클릭합니다.
템플릿 창에서 빈 프로젝트를 선택합니다.
기능 이벤트 수신자에는 프로젝트 템플릿이 없으므로 이 프로젝트 형식이 사용됩니다.
이름 상자에 FeatureEvtTest를 입력한 다음 확인을 클릭하여 SharePoint 사용자 지정 마법사를 표시합니다.
디버깅에 사용할 사이트 및 보안 수준 지정 페이지에서 새 사용자 지정 필드 항목을 추가할 SharePoint 서버 사이트의 URL을 입력하거나 기본 위치(http://<system name>/)를 사용합니다.
이 SharePoint 솔루션의 신뢰 수준을 선택하십시오. 섹션에서 팜 솔루션으로 배포를 클릭한 다음 마침을 클릭합니다.
샌드박스가 적용된 솔루션과 팜 솔루션 비교에 대한 자세한 내용은 샌드박스가 적용된 솔루션 고려 사항을 참조하십시오.
기능에 이벤트 수신자 추가
다음으로, 기능에 이벤트 수신자를 추가하고 기능이 비활성화될 때 실행되는 코드를 추가합니다.
기능에 이벤트 수신자를 추가하려면
기능 노드를 마우스 오른쪽 단추로 클릭하고 기능 추가를 선택하여 기능을 만듭니다.
Feature1이라는 기능이 기능 노드 아래에 표시됩니다.
기능 노드에서 Feature1을 마우스 오른쪽 단추로 클릭하고 이벤트 수신자 추가를 선택하여 기능에 이벤트 수신자를 추가합니다.
Feature1 아래에 코드 파일이 추가됩니다. 이 경우 프로젝트의 개발 언어에 따라 파일 이름이 Feature1.EventReceiver.cs 또는 Feature1.EventReceiver.vb로 지정됩니다.
이벤트 수신자 클래스에는 이벤트로 작동하는 주석 처리된 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 알림 목록에 알림을 출력하는지 여부를 테스트하는 기능을 비활성화합니다.
기능 이벤트 수신자를 테스트하려면
프로젝트의 활성 배포 구성 속성을 활성화 없음으로 설정합니다.
이 속성을 설정하면 기능이 SharePoint에서 활성화되지 않으며 기능 이벤트 수신자를 디버깅할 수 있습니다. 자세한 내용은 SharePoint 솔루션 디버깅을 참조하십시오.
F5 키를 눌러 프로젝트를 실행하고 SharePoint에 배포합니다.
SharePoint 웹 페이지의 맨 위에서 사이트 작업 단추를 클릭한 다음 사이트 설정을 클릭합니다.
사이트 설정 페이지의 사이트 작업 섹션에서 사이트 기능 관리 링크를 클릭합니다.
사이트 기능 페이지에서 FeatureEvtTest Feature1 기능 옆에 있는 활성화 단추를 클릭합니다.
사이트 기능 페이지에서 FeatureEvtTest Feature1 기능 옆에 있는 비활성화 단추를 클릭합니다. 확인 링크를 클릭하여 기능을 비활성화합니다.
탐색 모음에서 알림 링크를 클릭합니다.
기능이 비활성화된 후 알림 목록에 알림이 표시되는 것을 확인합니다.