다음을 통해 공유


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

SharePoint 프로젝트가 배포되거나 취소될 때 추가 작업을 수행하려는 경우 Visual Studio에서 발생하는 이벤트를 처리할 수 있습니다. 자세한 내용은 SharePoint 패키징 및 배포 확장을 참조하십시오.

SharePoint 프로젝트가 배포되거나 취소될 때 코드를 실행하려면

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

  2. 확장에서 ISharePointProjectService 개체에 액세스합니다. 자세한 내용은 방법: SharePoint 프로젝트 서비스 검색을 참조하십시오.

  3. 프로젝트 서비스의 DeploymentStartedDeploymentCompleted 이벤트를 처리합니다.

  4. 이벤트 처리기에서 DeploymentEventArgs 매개 변수를 사용하여 현재 배포 세션에 대한 정보를 가져옵니다. 예를 들어, 현재 배포 세션에 있는 프로젝트를 확인하고 이 프로젝트가 배포되고 있는지 아니면 취소되고 있는지를 확인할 수 있습니다.

다음 코드 예제에서는 프로젝트 확장에서 DeploymentStartedDeploymentCompleted 이벤트를 처리하는 방법을 보여 줍니다. 이 확장에서는 SharePoint 프로젝트의 배포가 시작되고 완료될 때 출력 창에 추가 메시지를 씁니다.

Imports System
Imports Microsoft.VisualStudio.SharePoint
Imports Microsoft.VisualStudio.SharePoint.Deployment
Imports System.ComponentModel.Composition

Namespace Contoso.ProjectDeploymentExtension

    <Export(GetType(ISharePointProjectExtension))> _
    Friend Class ExampleProjectDeploymentExtension
        Implements ISharePointProjectExtension

        Private Sub Initialize(ByVal projectService As ISharePointProjectService) _
            Implements ISharePointProjectExtension.Initialize
            AddHandler projectService.DeploymentStarted, AddressOf DeploymentStarted
            AddHandler projectService.DeploymentCompleted, AddressOf DeploymentCompleted
        End Sub

        Private Sub DeploymentStarted(ByVal Sender As Object, ByVal e As DeploymentEventArgs)
            If e.DeploymentContext.IsDeploying Then
                Dim message As String = String.Format("Deployment started for the {0} project.", 
                     e.Project.Name)
                e.DeploymentContext.Logger.WriteLine(message, LogCategory.Status)
            End If
        End Sub

        Private Sub DeploymentCompleted(ByVal Sender As Object, ByVal e As DeploymentEventArgs)
            If e.DeploymentContext.IsDeploying Then
                Dim message As String = String.Format("Deployment completed for the {0} project.", 
                    e.Project.Name)
                e.DeploymentContext.Logger.WriteLine(message, 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.ProjectDeploymentExtension
{
    [Export(typeof(ISharePointProjectExtension))]
    internal class ExampleProjectDeploymentExtension : ISharePointProjectExtension
    {
        public void Initialize(ISharePointProjectService projectService)
        {
            projectService.DeploymentStarted += ProjectService_DeploymentStarted;
            projectService.DeploymentCompleted += ProjectService_DeploymentCompleted;
        }

        void ProjectService_DeploymentStarted(object sender, DeploymentEventArgs e)
        {
            if (e.DeploymentContext.IsDeploying)
            {
                string message = String.Format("Deployment started for the {0} project.",
                     e.Project.Name);
                e.DeploymentContext.Logger.WriteLine(message, LogCategory.Status);
            }
        }

        void ProjectService_DeploymentCompleted(object sender, DeploymentEventArgs e)
        {
            if (e.DeploymentContext.IsDeploying)
            {
                string message = String.Format("Deployment completed for the {0} project.",
                     e.Project.Name);
                e.DeploymentContext.Logger.WriteLine(message, LogCategory.Status);
            }
        }
    }
}

코드 컴파일

이 예제에는 다음 어셈블리에 대한 참조가 필요합니다.

  • Microsoft.VisualStudio.SharePoint

  • System.ComponentModel.Composition

확장 배포

확장을 배포하려면 어셈블리 및 확장과 함께 배포할 다른 모든 파일에 대한 VSIX(Visual Studio Extension) 패키지를 만듭니다. 자세한 내용은 Visual Studio에서 SharePoint 도구에 대한 확장 배포를 참조하십시오.

참고 항목

작업

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

기타 리소스

SharePoint 패키징 및 배포 확장