Comment : exécuter le code lors de 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 qui sont déclenchés par les éléments de projet SharePoint avant et après chaque étape de déploiement de l’exécution de Visual Studio.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 étendre un empaquetage SharePoint et déploiement.For more information, see Extending SharePoint Packaging and Deployment.

Pour exécuter du code lors de l’exécution 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. Événements dans les 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 à la sortie fenêtre lorsque Visual Studio recycle le pool d’applications pendant le déploiement et le 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);
            }
        }
    }
}

Compilation du codeCompiling 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éploiement de l’ExtensionDeploying 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éploiement d’Extensions pour les outils SharePoint dans Visual Studio.For more information, see Deploying Extensions for the SharePoint Tools in Visual Studio.

Voir aussiSee Also

Déploiement et l’extension empaquetage de SharePoint Extending SharePoint Packaging and Deployment
Procédure pas à pas : Création d’une étape de déploiement personnalisée pour les projets SharePoint Walkthrough: Creating a Custom Deployment Step for SharePoint Projects
Guide pratique pour exécuter du code lors du déploiement ou du retrait d’un projet SharePointHow to: Run Code When a SharePoint Project is Deployed or Retracted