Freigeben über


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

Wenn Sie zusätzliche Aufgaben für einen Bereitstellungsschritt in einem SharePoint-Projekt ausführen möchten, können Sie Ereignisse behandeln, die von den SharePoint-Projektelementen vor und nach der Ausführung jedes Bereitstellungsschritts durch Visual Studio ausgelöst werden.Weitere Informationen finden Sie unter Erweitern von SharePoint-Packen und -Bereitstellen.

So führen Sie Code bei der Ausführung von Bereitstellungsschritten aus

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

  2. Behandeln Sie in der Erweiterung das DeploymentStepStarted- und DeploymentStepCompleted-Ereignis eines ISharePointProjectItemType-Objekts (in einer Projektelementerweiterung oder Projekterweiterung) oder eines ISharePointProjectItemTypeDefinition-Objekts (in einer Definition eines neuen Projektelementtyps).

  3. Verwenden Sie in den Ereignishandlern den DeploymentStepStartedEventArgs-Parameter und den DeploymentStepCompletedEventArgs-Parameter, um Informationen zum Bereitstellungsschritt abzurufen.Sie können z. B. ermitteln, welcher Bereitstellungsschritt ausgeführt wird und ob die Projektmappe bereitgestellt oder zurückgenommen wird.

Beispiel

Im folgenden Codebeispiel wird veranschaulicht, wie das DeploymentStepStarted-Ereignis und das DeploymentStepCompleted-Ereignis in einer Erweiterung für das Listeninstanzprojektelement behandelt werden.Diese Erweiterung zeigt eine zusätzliche Meldung im Fenster Ausgabe an, wenn Visual Studio den Anwendungspool beim Bereitstellen oder Zurücknehmen der Projektmappe wiederverwendet.

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

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

Aufgaben

Exemplarische Vorgehensweise: Erstellen eines benutzerdefinierten Bereitstellungsschritts für SharePoint-Projekte

Konzepte

Erweitern von SharePoint-Packen und -Bereitstellen

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