Sdílet prostřednictvím


Jak: vyřešení konfliktů nasazení

Můžete poskytnout vlastní kód pro zpracování konfliktů nasazení pro položku projektu služby SharePoint.Může například určit, zda všechny soubory v aktuální položce projektu již existují v místě nasazení a odstraňte soubory nasazena před aktuální položky projektu nasazení.Další informace o nasazení konflikty, viz 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. V rozšíření, zpracování 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 obslužné rutině události určují, zda došlo ke konfliktu mezi položky projektu, který nasazuje a nasazeného řešení na webu služby SharePoint, na základě kritérií, které se vztahují k danému.Můžete použít ProjectItem vlastnost události argumenty parametru analyzovat položky projektu, který je nasazeno a analyzovat soubory na místě nasazení voláním SharePoint příkaz, který definujete pro tento účel.

    Pro mnoho typů konfliktů nejprve můžete určit, které nasazení krok se provádí.Lze to provést pomocí DeploymentStepInfo vlastnost události argumenty parametru.I když nemá obvykle smysl rozpoznat konflikty během integrovaná AddSolution nasazení kroku můžete zkontrolovat konflikty během některého kroku nasazení.

  4. Pokud existuje konflikt, [M:Microsoft.VisualStudio.SharePoint.Deployment.IDeploymentConflictCollection.Add(System.String,System.Func`2,System.Boolean)] metodu Conflicts vlastnost události argumenty pro vytvoření nového IDeploymentConflict objektu.Tento objekt představuje konflikt nasazení.Ve volání [M:Microsoft.VisualStudio.SharePoint.Deployment.IDeploymentConflictCollection.Add(System.String,System.Func`2,System.Boolean)] metoda, také určit metodu, která se nazývá vyřešit konflikt.

Příklad

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

Pro jednoduchost DeploymentStepStarted obslužné rutiny události v tomto příkladu předpokládá, že existuje konflikt nasazení (je vždy přidá nový IDeploymentConflict objektu) a Resolve jednoduše vrátí metoda true označuje, že byl konflikt vyřešen.V reálné situaci vaše DeploymentStepStarted by nejprve zjistit, zda ke konfliktu mezi souborů v aktuální položce projektu a souborů v místě nasazení obslužnou rutinu události a potom přidejte IDeploymentConflict objektu pouze, pokud existuje konflikt.Například můžete použít e.ProjectItem.Files vlastnosti obslužné rutiny události analyzovat soubory v položce projektu a může volat příkaz analyzovat soubory na místě nasazení služby SharePoint.Podobně v reálné situaci Resolve SharePoint příkaz vyřešit konflikt na webu služby SharePoint může volání metody.Další informace o vytváření SharePoint příkazy, viz Jak: 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é

Koncepty

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

Rozšíření položky služby SharePoint projektu

Jak: spustit kód při zavádění kroky jsou provedeny.

Jak: Vytvoření příkazu SharePoint