Comment : exécuter le code lors de l'exécution des étapes de déploiement
Si vous souhaitez effectuer des tâches supplémentaires pour une étape du déploiement dans un projet SharePoint, il est possible de gérer des événements déclenchés par des éléments de projet SharePoint avant et après l'exécution de chaque étape de déploiement par Visual Studio.Pour plus d'informations, consultez Extension de la création de packages et du déploiement SharePoint.
Pour exécuter le code lors de l'exécution des étapes de déploiement
Créez une extension d'élément de projet, une extension de projet ou une définition d'un nouveau type d'élément de projet.Pour plus d'informations, consultez les rubriques suivantes :
Dans l'extension, gérez les événements DeploymentStepStarted et DeploymentStepCompleted d'un objet ISharePointProjectItemType (dans une extension d'élément de projet ou une extension de projet) ou d'un objet ISharePointProjectItemTypeDefinition (dans une définition d'un nouveau type d'élément de projet).
Dans les gestionnaires d'événements, utilisez les paramètres DeploymentStepStartedEventArgs et DeploymentStepCompletedEventArgs pour obtenir des informations à propos de l'étape de déploiement.Vous pouvez, par exemple, déterminer l'étape du déploiement en cours d'exécution et savoir si la solution est déployée ou retirée.
Exemple
L'exemple de code suivant montre comment gérer les événements DeploymentStepStarted et DeploymentStepCompleted dans une extension pour l'élément de projet Instance de liste.Cette extension écrit un message supplémentaire dans la fenêtre Sortie lorsque Visual Studio recycle le pool d'applications pendant le déploiement et le retrait de la solution.
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);
}
}
}
}
Compilation du code
Cet exemple nécessite des références aux assemblys suivants :
Microsoft.VisualStudio.SharePoint
System.ComponentModel.Composition
Déploiement de l'extension
Pour déployer l'extension, créez un package d'extension Visual Studio (VSIX) pour l'assembly et tous les autres fichiers que vous voulez distribuer avec l'extension.Pour plus d'informations, consultez Déploiement d'extensions pour les outils SharePoint dans Visual Studio.
Voir aussi
Tâches
Procédure pas à pas : création d'une étape de déploiement personnalisée pour des projets SharePoint
Concepts
Extension de la création de packages et du déploiement SharePoint
Comment : exécuter du code lors du déploiement ou du retrait d'un projet SharePoint