다음을 통해 공유


방법: 배포 단계가 진행될 때 코드 실행

SharePoint 프로젝트의 배포 단계에 대해 추가 작업을 수행하려는 경우 Visual Studio에서 각 배포 단계를 실행하기 전후에 SharePoint 프로젝트 항목에서 발생하는 이벤트를 처리할 수 있습니다. 자세한 내용은 SharePoint 패키징 및 배포 확장을 참조하십시오.

배포 단계가 진행될 때 코드를 실행하려면

  1. 프로젝트 항목 확장, 프로젝트 확장 또는 새 프로젝트 항목 형식의 정의를 만듭니다. 자세한 내용은 다음 항목을 참조하십시오.

  2. 확장에서 ISharePointProjectItemType 개체(프로젝트 항목 또는 프로젝트를 확장하는 경우) 또는 ISharePointProjectItemTypeDefinition 개체(새 프로젝트 항목 형식을 정의하는 경우)의 DeploymentStepStartedDeploymentStepCompleted 이벤트를 처리합니다.

  3. 이벤트 처리기에서 DeploymentStepStartedEventArgsDeploymentStepCompletedEventArgs 매개 변수를 사용하여 배포 단계에 대한 정보를 가져옵니다. 예를 들어 실행 중인 배포 단계와 솔루션이 배포되는지 또는 제거되는지를 확인할 수 있습니다.

예제

다음 코드 예제에서는 목록 인스턴스 프로젝트 항목의 확장에서 DeploymentStepStartedDeploymentStepCompleted 이벤트를 처리하는 방법을 보여 줍니다. 이 확장은 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 프로젝트용 사용자 지정 배포 단계 만들기

기타 리소스

SharePoint 패키징 및 배포 확장

방법: SharePoint 프로젝트가 배포되거나 취소될 때 코드 실행