Partager via


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

  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, 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).

  3. 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

Autres ressources

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