Comment : exécuter du code quand l’exécution des étapes de déploiementHow to: Run code when deployment steps are executed

Si vous souhaitez effectuer des tâches supplémentaires pour une étape de déploiement dans un projet SharePoint, vous pouvez gérer les événements déclenchés par les éléments de projet SharePoint avant et après l’exécution de Visual Studio chaque étape du déploiement.If you want to perform additional tasks for a deployment step in a SharePoint project, you can handle events that are raised by SharePoint project items before and after Visual Studio executes each deployment step. Pour plus d’informations, consultez extension SharePoint Packaging and Deployment.For more information, see Extending SharePoint Packaging and Deployment.

Pour exécuter du code lors de l’exécutent des étapes de déploiementTo run code when deployment steps are executed

  1. Créer une extension d’élément de projet, une extension de projet ou une définition d’un nouveau type d’élément de projet.Create a project item extension, a project extension, or a definition of a new project item type. Pour plus d’informations, consultez les rubriques suivantes :For more information, see the following topics:

  2. Dans l’extension, gérez les DeploymentStepStarted et DeploymentStepCompleted événements d’un ISharePointProjectItemType objet (dans une extension d’élément de projet ou une extension de projet) ou un ISharePointProjectItemTypeDefinition objet (dans une définition d’un nouveau type d’élément de projet).In the extension, handle the DeploymentStepStarted and DeploymentStepCompleted events of an ISharePointProjectItemType object (in a project item extension or project extension) or an ISharePointProjectItemTypeDefinition object (in a definition of a new project item type).

  3. Dans les événements gestionnaires, utilisez le DeploymentStepStartedEventArgs et DeploymentStepCompletedEventArgs paramètres pour obtenir des informations sur l’étape de déploiement.In the event handlers, use the DeploymentStepStartedEventArgs and DeploymentStepCompletedEventArgs parameters to get information about the deployment step. Par exemple, vous pouvez déterminer l’étape de déploiement qui s’exécute et indique si la solution est déployée ou retirée.For example, you can determine which deployment step is executing and whether the solution is being deployed or retracted.

ExempleExample

L’exemple de code suivant montre comment gérer les DeploymentStepStarted et DeploymentStepCompleted événements dans une extension pour l’élément de projet d’Instance de liste.The following code example demonstrates how to handle the DeploymentStepStarted and DeploymentStepCompleted events in an extension for the List Instance project item. Cette extension écrit un message supplémentaire pour le sortie fenêtre lorsque Visual Studio recycle le pool d’applications lors du déploiement et de retrait de la solution.This extension writes an additional message to the Output window when Visual Studio recycles the application pool while deploying and retracting the 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);
            }
        }
    }
}

Compiler le codeCompile the code

Cet exemple nécessite des références aux assemblys suivants :This example requires references to the following assemblies:

  • Microsoft.VisualStudio.SharePointMicrosoft.VisualStudio.SharePoint

  • System.ComponentModel.CompositionSystem.ComponentModel.Composition

Déployer l’extensionDeploy the extension

Pour déployer l’extension, créez un Visual StudioVisual Studio package d’extension (VSIX) pour l’assembly et tous les autres fichiers que vous souhaitez distribuer avec l’extension.To deploy the extension, create a Visual StudioVisual Studio extension (VSIX) package for the assembly and any other files that you want to distribute with the extension. Pour plus d’informations, consultez déployer des extensions pour les outils SharePoint dans Visual Studio.For more information, see Deploy extensions for the SharePoint tools in Visual Studio.

Voir aussiSee also

Étendre le déploiement et empaquetage de SharePoint Extend SharePoint packaging and deployment
Procédure pas à pas : Créer une étape de déploiement personnalisée pour les projets SharePoint Walkthrough: Create a custom deployment step for SharePoint projects
Comment : exécuter du code quand un projet SharePoint est déployé ou retiréHow to: Run code when a SharePoint project is deployed or retracted