Sdílet prostřednictvím


Postupy: Zpracování konfliktů nasazení

Můžete zadat kód pro zpracování konfliktů pro položku SharePoint projektu nasazení. Může například určit, zda všechny soubory v aktuální položce projektu již existují v místě nasazení a potom odstraňte soubory nasazena před nasazením aktuální položky projektu. Další informace o nasazení konfliktech naleznete Rozšíření balení a nasazení služby SharePoint.

Zpracování konfliktů nasazení

  1. Vytvořte rozšíření položky projektu, rozšíření projektu nebo definici nového typu položky projektu. Další informace naleznete v následujících tématech:

  2. Zpracování na rozšíření DeploymentStepStarted události ISharePointProjectItemType objektu (v projektu rozšíření položky nebo rozšíření projektu) nebo ISharePointProjectItemTypeDefinition objektu (v definici nový typ položky projektu).

  3. V obsluze události zjistěte, zda je konflikt mezi položky projektu, nasazuje a nasazení řešení na webu SharePoint na základě kritérií, které se vztahují k danému typu. Můžete použít ProjectItem vlastnost události argumenty parametru položky projektu, který nasazuje, analyzovat a analyzovat soubory na místě nasazení vyvoláním příkazu SharePoint, který definujete pro tento účel.

    Pro mnoho typů konfliktů nejprve můžete určit provedení kroku které nasazení. To lze provést pomocí DeploymentStepInfo Vlastnost argumenty parametru události. Ačkoli nemá obvykle smysl rozpoznat konflikty během integrovaná AddSolution nasazení kroku můžete zkontrolovat konflikty během jakékoli nasazení krok.

  4. Pokud existuje konflikt Add metodu Conflicts vlastností argumentů události pro vytvoření nového IDeploymentConflict objektu. Tento objekt představuje konflikt nasazení. Ve volání Add Metoda také určit metodu, která nazývá konflikt vyřešit.

Příklad

Následující příklad kódu ukazuje základní proces pro zpracování konfliktů nasazení v rozšíření položky projektu pro položky seznamu definice projektu. Zpracování konfliktů nasazení pro jiný typ projektu položky předat jiné řetězce SharePointProjectItemTypeAttribute. Další informace naleznete v tématu Rozšíření položky projektu SharePoint.

Pro zjednodušení DeploymentStepStarted obslužné rutiny události v tomto příkladu předpokládá, že existuje konflikt nasazení (tedy vždy přidá nový IDeploymentConflict objektu) a Resolve jednoduše vrátí metoda true označíte, že byl konflikt vyřešen. V reálné situaci vaše DeploymentStepStarted obslužné rutiny události by nejprve určit při konfliktu mezi souborem v aktuální položce projektu a nasazení umístění souboru a potom přidejte IDeploymentConflict objektu, pouze pokud existuje konflikt. Můžete například použít e.ProjectItem.Files Vlastnosti obslužné rutiny události analyzovat soubory v projektu položky a může volat příkaz SharePoint analyzovat soubory v umístění nasazení. Podobně v reálné situaci Resolve Metoda může volat příkaz SharePoint řešení konfliktu na serveru SharePoint. Další informace o vytváření příkazů služby SharePoint naleznete v Postupy: Vytvoření příkazu SharePoint.

Imports Microsoft.VisualStudio.SharePoint
Imports Microsoft.VisualStudio.SharePoint.Deployment
Imports System.ComponentModel.Composition

<Export(GetType(ISharePointProjectItemTypeExtension))>
<SharePointProjectItemType("Microsoft.VisualStudio.SharePoint.ListDefinition")>
Public Class DeploymentConflictExtension
    Implements ISharePointProjectItemTypeExtension

    Private Sub Initialize(ByVal projectItemType As ISharePointProjectItemType) _
    Implements ISharePointProjectItemTypeExtension.Initialize
        AddHandler projectItemType.DeploymentStepStarted, AddressOf DeploymentStepStarted
    End Sub

    Private Sub DeploymentStepStarted(ByVal Sender As Object, ByVal e As DeploymentStepStartedEventArgs)
        If e.DeploymentStepInfo.Id = DeploymentStepIds.AddSolution Then
            e.Conflicts.Add("This is an example conflict", AddressOf Me.Resolve, True)
            e.ProjectItem.Project.ProjectService.Logger.WriteLine("Added new example conflict.", LogCategory.Status)
        End If
    End Sub

    Private Function Resolve(ByVal projectItem As ISharePointProjectItem) As Boolean
        projectItem.Project.ProjectService.Logger.WriteLine("Returning 'true' from Resolve method for example conflict.",
            LogCategory.Status)
        Return True
    End Function
End Class
using Microsoft.VisualStudio.SharePoint;
using Microsoft.VisualStudio.SharePoint.Deployment;
using System.ComponentModel.Composition;

namespace Contoso.DeploymentConflictExtension
{
    [Export(typeof(ISharePointProjectItemTypeExtension))]
    [SharePointProjectItemType("Microsoft.VisualStudio.SharePoint.ListDefinition")]
    class DeploymentConflictExtension : ISharePointProjectItemTypeExtension
    {
        public void Initialize(ISharePointProjectItemType projectItemType)
        {
            projectItemType.DeploymentStepStarted += DeploymentStepStarted;
        }

        private void DeploymentStepStarted(object sender, DeploymentStepStartedEventArgs e)
        {
            if (e.DeploymentStepInfo.Id == DeploymentStepIds.AddSolution)
            {
                e.Conflicts.Add("This is an example conflict", this.Resolve, true);
                e.ProjectItem.Project.ProjectService.Logger.WriteLine("Added new example conflict.", LogCategory.Status);
            }
        }

        private bool Resolve(ISharePointProjectItem projectItem)
        {
            projectItem.Project.ProjectService.Logger.WriteLine("Returning 'true' from Resolve method for example conflict.", 
                LogCategory.Status);
            return true;
        }
    }
}

Probíhá kompilace kódu

Tento příklad vyžaduje odkazy na následující sestavení:

  • Microsoft.VisualStudio.SharePoint

  • System.ComponentModel.Composition

Nasazování rozšíření

Chcete-li nasadit rozšíření, vytvořte Visual Studio balíček rozšíření (VSIX) pro sestavení a všechny další soubory, které chcete distribuovat s rozšířením. Další informace naleznete v tématu Nasazování rozšíření pro nástroje služby SharePoint v aplikaci Visual Studio.

Viz také

Úkoly

Postupy: Spuštění kódu při vykonávání postupu nasazení

Další zdroje

Rozšíření balení a nasazení služby SharePoint

Rozšíření položky projektu SharePoint

Postupy: Vytvoření příkazu SharePoint

Historie změn

Datum

Poslední dokumenty

Důvod

Květen 2010

Přidané téma.

Rozšíření informace