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
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:
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).
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à
Concetti
Estensione della creazione di pacchetti e della distribuzione di SharePoint
Procedura: eseguire codice quando un progetto SharePoint viene distribuito o ritratto