Freigeben über


Gewusst wie: Ausführen von Code beim Bereitstellen oder Zurückziehen eines SharePoint-Projekts

Wenn Sie beim Bereitstellen oder Zurückziehen eines SharePoint-Projekts zusätzliche Aufgaben ausführen möchten, können Sie von Visual Studio ausgelöste Ereignisse behandeln.Weitere Informationen finden Sie unter Erweitern von SharePoint-Packen und -Bereitstellen.

So führen Sie Code beim Bereitstellen oder Zurückziehen eines SharePoint-Projekts aus

  1. Erstellen Sie eine Projektelementerweiterung, eine Projekterweiterung oder eine Definition eines neuen Projektelementtyps.Weitere Informationen finden Sie unter den folgenden Themen:

  2. Greifen Sie in der Erweiterung auf das ISharePointProjectService-Objekt zu.Weitere Informationen finden Sie unter Gewusst wie: Abrufen des SharePoint-Projektdiensts.

  3. Behandeln Sie das DeploymentStarted-Ereignis und das DeploymentCompleted-Ereignis des Projektdiensts.

  4. Rufen Sie in den Ereignishandlern mithilfe des DeploymentEventArgs-Parameters Informationen zur aktuellen Bereitstellungssitzung ab.So können Sie beispielsweise ermitteln, welches Projekt sich in der aktuellen Bereitstellungssitzung befindet und ob es bereitgestellt oder zurückgezogen wird.

Im folgenden Codebeispiel wird die Behandlung des DeploymentStarted-Ereignisses und des DeploymentCompleted-Ereignisses in einer Projekterweiterung veranschaulicht.Von dieser Erweiterung wird bei Start und Fertigstellung der Bereitstellung für ein SharePoint-Projekt eine zusätzliche Meldung in das Ausgabefenster geschrieben.

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);
            }
        }
    }
}

Kompilieren des Codes

Für dieses Beispiel sind Verweise auf die folgenden Assemblys erforderlich:

  • Microsoft.VisualStudio.SharePoint

  • System.ComponentModel.Composition

Bereitstellen der Erweiterung

Erstellen Sie ein Visual Studio-Erweiterungspaket (VSIX) für die Assembly und alle weiteren Dateien, die Sie mit der Erweiterung verteilen möchten, um die Erweiterung bereitzustellen.Weitere Informationen erhalten Sie unter Bereitstellen von Erweiterungen für die SharePoint-Tools in Visual Studio.

Siehe auch

Konzepte

Erweitern von SharePoint-Packen und -Bereitstellen

Gewusst wie: Ausführen von Code bei der Ausführung von Bereitstellungsschritten