방법: 배포 단계가 진행될 때 코드 실행
SharePoint 프로젝트의 배포 단계에 대해 추가 작업을 수행하려는 경우 Visual Studio에서 각 배포 단계를 실행하기 전후에 SharePoint 프로젝트 항목에서 발생하는 이벤트를 처리할 수 있습니다. 자세한 내용은 SharePoint 패키징 및 배포 확장을 참조하십시오.
배포 단계가 진행될 때 코드를 실행하려면
프로젝트 항목 확장, 프로젝트 확장 또는 새 프로젝트 항목 형식의 정의를 만듭니다. 자세한 내용은 다음 항목을 참조하십시오.
확장에서 ISharePointProjectItemType 개체(프로젝트 항목 또는 프로젝트를 확장하는 경우) 또는 ISharePointProjectItemTypeDefinition 개체(새 프로젝트 항목 형식을 정의하는 경우)의 DeploymentStepStarted 및 DeploymentStepCompleted 이벤트를 처리합니다.
이벤트 처리기에서 DeploymentStepStartedEventArgs 및 DeploymentStepCompletedEventArgs 매개 변수를 사용하여 배포 단계에 대한 정보를 가져옵니다. 예를 들어 실행 중인 배포 단계와 솔루션이 배포되는지 또는 제거되는지를 확인할 수 있습니다.
예제
다음 코드 예제에서는 목록 인스턴스 프로젝트 항목의 확장에서 DeploymentStepStarted 및 DeploymentStepCompleted 이벤트를 처리하는 방법을 보여 줍니다. 이 확장은 Visual Studio에서 솔루션을 배포 및 제거하는 동안 응용 프로그램 풀을 재생할 때 출력 창에 추가 메시지를 씁니다.
Imports System
Imports Microsoft.VisualStudio.SharePoint
Imports Microsoft.VisualStudio.SharePoint.Deployment
Imports System.ComponentModel.Composition
Namespace Contoso.ListInstanceDeploymentExtension
<Export(GetType(ISharePointProjectItemTypeExtension))> _
<SharePointProjectItemType("Microsoft.VisualStudio.SharePoint.ListInstance")> _
Friend Class ExampleDeploymentStepExtension
Implements ISharePointProjectItemTypeExtension
Private Sub Initialize(ByVal projectItemType As ISharePointProjectItemType) _
Implements ISharePointProjectItemTypeExtension.Initialize
AddHandler projectItemType.DeploymentStepStarted, AddressOf DeploymentStepStarted
AddHandler projectItemType.DeploymentStepCompleted, AddressOf DeploymentStepCompleted
End Sub
Private Sub DeploymentStepStarted(ByVal Sender As Object, ByVal e As DeploymentStepStartedEventArgs)
If e.DeploymentStepInfo.Id = DeploymentStepIds.RecycleApplicationPool AndAlso
e.DeploymentContext.IsDeploying Then
e.DeploymentContext.Logger.WriteLine("The application pool is about to be " &
"recycled while the solution is being deployed.", LogCategory.Status)
End If
End Sub
Private Sub DeploymentStepCompleted(ByVal Sender As Object, ByVal e As DeploymentStepCompletedEventArgs)
If e.DeploymentStepInfo.Id = DeploymentStepIds.RecycleApplicationPool AndAlso
e.DeploymentContext.IsRetracting Then
e.DeploymentContext.Logger.WriteLine("The application pool was " &
"recycled while the solution is being retracted.", LogCategory.Status)
End If
End Sub
End Class
End Namespace
using System;
using Microsoft.VisualStudio.SharePoint;
using Microsoft.VisualStudio.SharePoint.Deployment;
using System.ComponentModel.Composition;
namespace Contoso.ListInstanceDeploymentExtension
{
[Export(typeof(ISharePointProjectItemTypeExtension))]
[SharePointProjectItemType("Microsoft.VisualStudio.SharePoint.ListInstance")]
internal class ExampleDeploymentStepExtension : ISharePointProjectItemTypeExtension
{
public void Initialize(ISharePointProjectItemType projectItemType)
{
projectItemType.DeploymentStepStarted += DeploymentStepStarted;
projectItemType.DeploymentStepCompleted += DeploymentStepCompleted;
}
private void DeploymentStepStarted(object sender, DeploymentStepStartedEventArgs e)
{
if (e.DeploymentStepInfo.Id == DeploymentStepIds.RecycleApplicationPool &&
e.DeploymentContext.IsDeploying)
{
e.DeploymentContext.Logger.WriteLine("The application pool is about to be " +
"recycled while the solution is being deployed.", LogCategory.Status);
}
}
private void DeploymentStepCompleted(object sender, DeploymentStepCompletedEventArgs e)
{
if (e.DeploymentStepInfo.Id == DeploymentStepIds.RecycleApplicationPool &&
e.DeploymentContext.IsRetracting)
{
e.DeploymentContext.Logger.WriteLine("The application pool was " +
"recycled while the solution is being retracted.", LogCategory.Status);
}
}
}
}
코드 컴파일
이 예제에는 다음 어셈블리에 대한 참조가 필요합니다.
Microsoft.VisualStudio.SharePoint
System.ComponentModel.Composition
확장 배포
확장을 배포하려면 어셈블리 및 확장과 함께 배포할 다른 모든 파일에 대한 VSIX(Visual Studio Extension) 패키지를 만듭니다. 자세한 내용은 Visual Studio에서 SharePoint 도구에 대한 확장 배포를 참조하십시오.
참고 항목
작업
연습: SharePoint 프로젝트용 사용자 지정 배포 단계 만들기