방법: SharePoint 항목 확장 만들기
Visual Studio에 이미 설치되어 있는 SharePoint 프로젝트 항목에 기능을 추가하려는 경우 프로젝트 항목 확장을 만듭니다. 자세한 내용은 SharePoint 프로젝트 항목 확장를 참조하십시오.
프로젝트 항목 확장을 만들려면
클래스 라이브러리 프로젝트를 만듭니다.
다음 어셈블리에 대한 참조를 추가합니다.
Microsoft.VisualStudio.SharePoint
System.ComponentModel.Composition
ISharePointProjectItemTypeExtension 인터페이스를 구현하는 클래스를 만듭니다.
클래스에 다음 특성을 추가합니다.
System.ComponentModel.Composition.ExportAttribute. 이 특성을 사용하면 Visual Studio에서 ISharePointProjectItemTypeExtension 구현을 찾아 로드할 수 있습니다. ISharePointProjectItemTypeExtension 형식을 특성 생성자에 전달합니다.
SharePointProjectItemTypeAttribute. 프로젝트 항목 확장에서 이 특성은 확장할 프로젝트 항목을 식별합니다. 프로젝트 항목의 ID를 특성 생성자에 전달합니다. Visual Studio 2010에 포함되어 있는 프로젝트 항목의 ID 목록은 SharePoint 프로젝트 항목 확장를 참조하십시오.
Initialize 메서드 구현에서 projectItemType 매개 변수의 멤버를 사용하여 확장의 동작을 정의합니다. 이 매개 변수는 ISharePointProjectItemEvents 및 ISharePointProjectItemFileEvents 인터페이스에 정의된 이벤트에 대한 액세스를 제공하는 ISharePointProjectItemType 개체입니다. 확장할 프로젝트 항목 형식의 특정 인스턴스에 액세스하려면 ProjectItemAdded 및 ProjectItemInitialized 등과 같은 ISharePointProjectItemEvents 이벤트를 처리합니다.
예제
다음 코드 예제에서는 간단한 이벤트 수신자 프로젝트 항목의 확장을 만드는 방법을 보여 줍니다. 사용자가 SharePoint 프로젝트에서 이벤트 수신자 프로젝트 항목을 추가할 때마다 이 확장에서 출력 창과 오류 목록 창에 메시지를 씁니다.
Imports Microsoft.VisualStudio.SharePoint
Imports System
Imports System.ComponentModel
Imports System.ComponentModel.Composition
Namespace Contoso.ExampleProjectItemExtension
<Export(GetType(ISharePointProjectItemTypeExtension))> _
<SharePointProjectItemType("Microsoft.VisualStudio.SharePoint.EventHandler")> _
Friend Class ExampleProjectItemExtension
Implements ISharePointProjectItemTypeExtension
Private Sub Initialize(ByVal projectItemType As ISharePointProjectItemType) _
Implements ISharePointProjectItemTypeExtension.Initialize
AddHandler projectItemType.ProjectItemAdded, AddressOf ProjectItemAdded
End Sub
Private Sub ProjectItemAdded(ByVal Sender As Object, ByVal e As SharePointProjectItemEventArgs)
Dim projectItem As ISharePointProjectItem = CType(Sender, ISharePointProjectItem)
Dim Message As String = String.Format("An Event Handler project item named {0} was added to the {1} project.", _
projectItem.Name, projectItem.Project.Name)
projectItem.Project.ProjectService.Logger.WriteLine(Message, LogCategory.Message)
End Sub
End Class
End Namespace
using Microsoft.VisualStudio.SharePoint;
using System;
using System.ComponentModel;
using System.ComponentModel.Composition;
namespace Contoso.ExampleProjectItemExtension
{
[Export(typeof(ISharePointProjectItemTypeExtension))]
[SharePointProjectItemType("Microsoft.VisualStudio.SharePoint.EventHandler")]
internal class ExampleProjectItemExtension : ISharePointProjectItemTypeExtension
{
public void Initialize(ISharePointProjectItemType projectItemType)
{
projectItemType.ProjectItemAdded += projectItemType_ProjectItemAdded;
}
void projectItemType_ProjectItemAdded(object sender, SharePointProjectItemEventArgs e)
{
ISharePointProjectItem projectItem = (ISharePointProjectItem)sender;
string message = String.Format("An Event Handler project item named {0} was added to the {1} project.",
projectItem.Name, projectItem.Project.Name);
projectItem.Project.ProjectService.Logger.WriteLine(message, LogCategory.Message);
}
}
}
이 예제에서는 SharePoint 프로젝트 서비스를 사용하여 출력 창과 오류 목록 창에 메시지를 씁니다. 자세한 내용은 SharePoint 프로젝트 서비스 사용을 참조하십시오.
코드 컴파일
이 예제에는 다음 어셈블리에 대한 참조가 필요합니다.
Microsoft.VisualStudio.SharePoint
System.ComponentModel.Composition
확장 배포
확장을 배포하려면 어셈블리 및 확장과 함께 배포할 다른 모든 파일에 대한 VSIX(Visual Studio Extension) 패키지를 만듭니다. 자세한 내용은 Visual Studio에서 SharePoint 도구에 대한 확장 배포를 참조하십시오.