Partager via


Comment : exécuter du code lors du déploiement ou du retrait d'un projet SharePoint

Si vous souhaitez effectuer des tâches supplémentaires lorsqu'un projet SharePoint est déployé ou retiré, vous pouvez gérer des événements déclenchés par Visual Studio.Pour plus d'informations, consultez Extension de la création de packages et du déploiement SharePoint.

Pour exécuter du code lors du déploiement ou du retrait d'un projet SharePoint

  1. 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 :

  2. Dans l'extension, accédez à l'objet ISharePointProjectService.Pour plus d'informations, consultez Comment : récupérer le service de projet SharePoint.

  3. Gérez les événements DeploymentStarted et DeploymentCompleted du service du projet.

  4. Dans les gestionnaires d'événements, utilisez le paramètre DeploymentEventArgs pour obtenir des informations à propos de la session de déploiement actuelle.Vous pouvez, par exemple, déterminer le projet dans la session de déploiement actuelle et savoir s'il est déployé ou retiré.

L'exemple de code suivant illustre la gestion des événements DeploymentStarted et DeploymentCompleted dans une extension de projet.Cette extension écrit un message supplémentaire dans la fenêtre Sortie lorsque le déploiement démarre et se termine pour un projet SharePoint.

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

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

Concepts

Extension de la création de packages et du déploiement SharePoint

Comment : exécuter le code lors de l'exécution des étapes de déploiement