Condividi tramite


Procedura: eseguire codice all'esecuzione dei passaggi di distribuzione

Se si desidera effettuare attività aggiuntive per un passaggio di distribuzione in un progetto SharePoint, è possibile gestire gli eventi generati dagli elementi di progetto SharePoint prima e dopo l'esecuzione di ogni passaggio di distribuzione in Visual Studio.Per ulteriori informazioni, vedere Estensione della creazione di pacchetti e della distribuzione di SharePoint.

Per eseguire codice all'esecuzione dei passaggi di distribuzione

  1. Creare un'estensione di elemento di progetto, un'estensione di progetto o una definizione di un nuovo tipo di elemento di progetto.Per ulteriori informazioni, vedere i seguenti argomenti:

  2. Nell'estensione gestire gli eventi DeploymentStepStarted e DeploymentStepCompleted di un oggetto ISharePointProjectItemType (in un'estensione di elemento di progetto o in un'estensione di progetto) o ISharePointProjectItemTypeDefinition (in una definizione di un nuovo tipo di elemento di progetto).

  3. Nei gestori eventi utilizzare i parametri DeploymentStepStartedEventArgs e DeploymentStepCompletedEventArgs per ottenere informazioni sul passaggio di distribuzione.Ad esempio è possibile determinare il passaggio di distribuzione in corso di esecuzione e se la soluzione viene implementata o ritratta.

Esempio

Nell'esempio di codice seguente viene illustrato come gestire gli eventi DeploymentStepStarted e DeploymentStepCompleted in un'estensione per l'elemento di progetto Istanza di elenco.Questa estensione consente di scrivere un messaggio aggiuntivo nella finestra Output quando Visual Studio permette di riciclare il pool di applicazioni durante la distribuzione e la ritrazione della soluzione.

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

Compilazione del codice

In questo esempio sono richiesti riferimenti agli assembly seguenti:

  • Microsoft.VisualStudio.SharePoint

  • System.ComponentModel.Composition

Distribuzione dell'estensione

Per distribuire l'estensione, creare un pacchetto Visual Studio Extension (VSIX) per l'assembly e qualsiasi altro file che si desidera distribuire con l'estensione.Per ulteriori informazioni, vedere Distribuzione di estensioni per gli strumenti di SharePoint in Visual Studio.

Vedere anche

Attività

Procedura dettagliata: creazione di un passaggio di distribuzione personalizzato per progetti SharePoint

Concetti

Estensione della creazione di pacchetti e della distribuzione di SharePoint

Procedura: eseguire codice quando un progetto SharePoint viene distribuito o ritratto