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
Erstellen Sie eine Projektelementerweiterung, eine Projekterweiterung oder eine Definition eines neuen Projektelementtyps.Weitere Informationen finden Sie unter den folgenden Themen:
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).
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
Konzepte
Erweitern von SharePoint-Packen und -Bereitstellen
Gewusst wie: Ausführen von Code beim Bereitstellen oder Zurückziehen eines SharePoint-Projekts