Поделиться через


Практическое руководство. Запуск кода после выполнения шагов развертывания

Если в рамках шага развертывания проекта SharePoint требуется выполнять дополнительные задачи, можно обрабатывать события, создаваемые элементами проекта SharePoint, до и после выполнения каждого из шагов развертывания средой Visual Studio.Дополнительные сведения см. в разделе Расширение упаковки и развертывания проектов SharePoint.

Запуск кода после выполнения шагов развертывания

  1. Создайте расширение элемента проекта, расширение проекта или определение нового типа элемента проекта.Дополнительные сведения см. в следующих разделах.

  2. В расширении обработайте события DeploymentStepStarted и DeploymentStepCompleted объекта ISharePointProjectItemType (в расширении проектного элемента или расширении проекта) или объекта ISharePointProjectItemTypeDefinition (в определении нового типа проектного элемента).

  3. В обработчиках событий воспользуйтесь параметрами 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

Развертывание расширения

Чтобы развернуть расширение, создайте пакет расширения Visual Studio (VSIX) для сборки и всех остальных файлов, которые предположительно будут распространяться с расширением.Дополнительные сведения см. в разделе Разработка расширений для средств SharePoint в Visual Studio.

См. также

Задачи

Пошаговое руководство. Создание пользовательского шага развертывания для проектов SharePoint

Основные понятия

Расширение упаковки и развертывания проектов SharePoint

Практическое руководство. Выполнение кода во время развертывания или отзыва проекта SharePoint