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í
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:
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).
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.
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 |