Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Wenn Sie ein SharePoint-Projekt bereitstellen, führt Visual Studio 2010 in einer bestimmten Reihenfolge eine Reihe von Bereitstellungsschritten aus. Visual Studio enthält viele integrierte Bereitstellungsschritte, Sie können aber auch eigene Schritte erstellen.
In dieser exemplarischen Vorgehensweise erstellen Sie einen benutzerdefinierten Bereitstellungsschritt, um Projektmappen auf einem SharePoint-Server zu aktualisieren. Visual Studio beinhaltet integrierte Bereitstellungsschritte für viele Aufgaben, z. B. für das Zurücknehmen oder Hinzufügen von Projektmappen, es ist jedoch kein Bereitstellungsschritt zum Aktualisieren von Projektmappen enthalten. Beim Bereitstellen einer SharePoint-Lösung nimmt Visual Studio normalerweise zuerst die Projektmappe (sofern bereits bereitgestellt) zurück und stellt dann die ganze Projektmappe erneut bereit. Weitere Informationen zu den integrierten Bereitstellungsschritten finden Sie unter Bereitstellen von SharePoint-Lösungspaketen.
Diese exemplarische Vorgehensweise enthält die folgenden Aufgaben:
Erstellen einer Visual Studio-Erweiterung, die zwei Hauptaufgaben ausführt:
Es wird ein benutzerdefinierter Bereitstellungsschritt definiert, um SharePoint-Lösungen zu aktualisieren.
Es wird eine Projekterweiterung erstellt, die eine neue Bereitstellungskonfiguration definiert. Eine Bereitstellungskonfiguration ist ein Satz von Bereitstellungsschritten, die für ein bestimmtes Projekt ausgeführt werden. Die neue Bereitstellungskonfiguration beinhaltet den benutzerdefinierten Bereitstellungsschritt und mehrere integrierte Bereitstellungsschritte.
Erstellen von zwei benutzerdefinierten SharePoint-Befehlen, die von der Erweiterungsassembly aufgerufen werden. SharePoint-Befehle sind Methoden, die von Erweiterungsassemblys aufgerufen werden können, um APIs im SharePoint-Serverobjektmodell zu verwenden. Weitere Informationen finden Sie unter Aufrufe in die SharePoint-Objektmodelle.
Erstellen eines Visual Studio-Erweiterungspakets (VSIX) zum Bereitstellen beider Assemblys.
Testen des neuen Bereitstellungsschritts.
Vorbereitungsmaßnahmen
Zum Durchführen dieser exemplarischen Vorgehensweise werden auf dem Entwicklungscomputer die folgenden Komponenten benötigt:
Unterstützte Editionen von Microsoft Windows, SharePoint und Visual Studio. Weitere Informationen finden Sie unter Anforderungen für die Entwicklung von SharePoint-Lösungen.
Visual Studio 2010 SDK. Diese exemplarische Vorgehensweise verwendet die Vorlage VSIX Project im SDK, um ein VSIX-Paket zum Bereitstellen der Erweiterung zu erstellen. Weitere Informationen finden Sie unter Erweitern der SharePoint-Tools in Visual Studio.
Kenntnisse der folgenden Konzepte sind hilfreich, wenn auch für die Durchführung der exemplarischen Vorgehensweise nicht erforderlich:
Verwenden des SharePoint-Serverobjektmodells. Weitere Informationen finden Sie im Thema zur Verwendung des serverseitigen SharePoint Foundation-Objektmodells (möglicherweise in englischer Sprache).
SharePoint-Lösungen. Weitere Informationen finden Sie in der Lösungsübersicht (möglicherweise in englischer Sprache).
Aktualisieren von SharePoint-Lösungen. Weitere Informationen finden Sie im Thema zum Aktualisieren einer Lösung (möglicherweise in englischer Sprache).
Erstellen der Projekte
Zum Abschließen dieser exemplarischen Vorgehensweise müssen Sie drei Projekte erstellen:
Ein VSIX-Projekt für die Erstellung des VSIX-Pakets zum Bereitstellen der Erweiterung.
Ein Klassenbibliotheksprojekt, von dem die Erweiterung implementiert wird. Für dieses Projekt muss .NET Framework 4 als Zielversion verwendet werden.
Ein Klassenbibliotheksprojekt, das die benutzerdefinierten SharePoint-Befehle definiert. Für dieses Projekt muss .NET Framework 3.5 als Zielversion verwendet werden.
Beginnen Sie mit der exemplarischen Vorgehensweise, indem Sie beide Projekte erstellen.
So erstellen Sie das VSIX-Projekt
Starten Sie Visual Studio.
Zeigen Sie im Menü Datei auf Neu, und klicken Sie dann auf Projekt.
Erweitern Sie im Dialogfeld Neues Projekt den Knoten Visual C# oder Visual Basic, und klicken Sie dann auf Erweiterungen.
Tipp
Der Knoten Erweiterungen ist nur verfügbar, wenn Sie Visual Studio 2010 SDK installieren. Weitere Informationen finden Sie im Abschnitt zu den erforderlichen Komponenten und Voraussetzungen weiter oben.
Wählen Sie im Kombinationsfeld am oberen Rand des Dialogfelds .NET Framework 4 aus.
Klicken Sie auf die Vorlage VSIX Project.
Geben Sie im Feld Name die Zeichenfolge UpgradeDeploymentStep ein.
Klicken Sie auf OK.
Visual Studio fügt das UpgradeDeploymentStep-Projekt zum Projektmappen-Explorer hinzu.
So erstellen Sie das Erweiterungsprojekt
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Projektmappenknoten, klicken Sie auf Hinzufügen und dann auf Neues Projekt.
Tipp
In Visual Basic-Projekten wird der Projektmappenknoten nur im Projektmappen-Explorer angezeigt, wenn das Kontrollkästchen Projektmappe immer anzeigen in Allgemein, Projekte und Projektmappen, Dialogfeld "Optionen" aktiviert ist.
Erweitern Sie im Dialogfeld Neues Projekt den Knoten Visual C# oder Visual Basic, und klicken Sie anschließend auf Windows.
Wählen Sie im Kombinationsfeld am oberen Rand des Dialogfelds die Option .NET Framework 4 aus.
Wählen Sie die Projektvorlage Klassenbibliothek aus.
Geben Sie im Feld Name den Namen DeploymentStepExtension ein.
Klicken Sie auf OK.
Visual Studio fügt das Projekt DeploymentStepExtension der Projektmappe hinzu und öffnet die standardmäßige Class1-Codedatei.
Löschen Sie die Class1-Codedatei aus dem Projekt.
So erstellen Sie das SharePoint-Befehlsprojekt
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Projektmappenknoten, zeigen Sie auf Hinzufügen, und klicken Sie dann auf Neues Projekt.
Tipp
In Visual Basic-Projekten wird der Projektmappenknoten nur im Projektmappen-Explorer angezeigt, wenn das Kontrollkästchen Projektmappe immer anzeigen in Allgemein, Projekte und Projektmappen, Dialogfeld "Optionen" aktiviert ist.
Erweitern Sie im Dialogfeld Neues Projekt hinzufügen Visual C# oder Visual Basic, und klicken Sie dann auf Windows.
Klicken Sie auf die Projektvorlage Klassenbibliothek.
Wählen Sie im Kombinationsfeld am oberen Rand des Dialogfelds .NET Framework 3.5 aus.
Geben Sie im Feld Name die Zeichenfolge SharePointCommands ein.
Klicken Sie auf OK.
Visual Studio fügt der Projektmappe das Projekt SharePointCommands hinzu und öffnet die Class1-Standardcodedatei.
Löschen Sie die Class1-Codedatei aus dem Projekt.
Konfigurieren der Projekte
Bevor Sie Code für den benutzerdefinierten Bereitstellungsschritt schreiben, müssen Sie Codedateien und Assemblyverweise hinzufügen und die Projekte konfigurieren.
So konfigurieren Sie das Projekt "DeploymentStepExtension"
Fügen Sie im Projekt DeploymentStepExtension zwei Codedateien mit den folgenden Namen hinzu:
UpgradeStep
DeploymentConfigurationExtension
Klicken Sie im Menü Projekt auf Verweis hinzufügen.
Halten Sie die Taste STRG gedrückt, und wählen Sie auf der Registerkarte .NET die folgenden Assemblys aus. Klicken Sie dann auf OK.
Microsoft.VisualStudio.SharePoint
System.ComponentModel.Composition
So konfigurieren Sie das SharePointCommands-Projekt
Fügen Sie im Projekt SharePointCommands eine Codedatei mit dem Namen Commands hinzu.
Klicken Sie im Projektmappen-Explorer auf den Projektknoten SharePointCommands.
Klicken Sie im Menü Projekt auf Verweis hinzufügen.
Halten Sie die Taste STRG gedrückt, und wählen Sie auf der Registerkarte .NET die folgenden Assemblys aus. Klicken Sie dann auf OK.
Microsoft.SharePoint
Microsoft.VisualStudio.SharePoint.Commands
Definieren des benutzerdefinierten Bereitstellungsschritts
Erstellen Sie eine Klasse, die den Upgradebereitstellungsschritt definiert. Um den Bereitstellungsschritt zu definieren, implementiert die Klasse die IDeploymentStep-Schnittstelle. Implementieren Sie diese Schnittstelle immer dann, wenn Sie einen benutzerdefinierten Bereitstellungsschritt definieren möchten.
So definieren Sie den benutzerdefinierten Bereitstellungsschritt
Doppelklicken Sie im Projekt DeploymentStepExtension auf die UpgradeStep-Codedatei.
Fügen Sie folgenden Code in die Datei ein.
Tipp
Nach dem Hinzufügen dieses Codes weist das Projekt mehrere Kompilierungsfehler auf. Diese Fehler werden durch Code behoben, den Sie in späteren Schritten hinzufügen.
Imports System Imports Microsoft.VisualStudio.SharePoint Imports Microsoft.VisualStudio.SharePoint.Deployment Imports System.ComponentModel.Composition Namespace Contoso.DeploymentSteps.Upgrade ' Export attribute: Enables Visual Studio to discover and load this deployment step. ' DeploymentStep attribute: Specifies the ID for this new deployment step. ' UpgradeStep class: Defines a new deployment step that can be used to upgrade a solution ' on a SharePoint site. <Export(GetType(IDeploymentStep))> _ <DeploymentStep("Contoso.DeploymentSteps.UpgradeSolution")> _ Friend Class UpgradeStep Implements IDeploymentStep Private solutionName As String Private solutionFullPath As String Private Sub Initialize(ByVal stepInfo As IDeploymentStepInfo) _ Implements IDeploymentStep.Initialize stepInfo.Name = "Upgrade solution" stepInfo.StatusBarMessage = "Upgrading solution..." stepInfo.Description = "Upgrades the solution on the local machine." End Sub ' Specifies whether the solution can be upgraded. Private Function CanExecute(ByVal context As IDeploymentContext) As Boolean _ Implements IDeploymentStep.CanExecute ' SharePoint returns all the installed solutions names in lower case. solutionName = (context.Project.Package.Model.Name & ".wsp").ToLower() solutionFullPath = context.Project.Package.OutputPath Dim solutionExists As Boolean = _ context.Project.SharePointConnection.ExecuteCommand(Of String, Boolean)( "Contoso.Commands.IsSolutionDeployed", solutionName) ' Throw exceptions in error cases because deployment cannot proceed. If context.Project.IsSandboxedSolution = True Then Dim sandboxMessage As String = "Cannot upgrade the solution. Upgrade deployment " & _ "configuration does not support Sandboxed solutions." context.Logger.WriteLine(sandboxMessage, LogCategory.Error) Throw New InvalidOperationException() ElseIf solutionExists = False Then Dim notDeployedMessage As String = String.Format("Cannot upgrade the solution. The IsSolutionDeployed " & _ "command cannot find the following solution on the SharePoint site: {0}.", solutionName) context.Logger.WriteLine(notDeployedMessage, LogCategory.Error) Throw New InvalidOperationException(notDeployedMessage) End If ' Execute step and continue with deployment. Return True End Function Private Sub Execute(ByVal context As IDeploymentContext) _ Implements IDeploymentStep.Execute context.Logger.WriteLine("Upgrading solution: " & solutionName, LogCategory.Status) context.Project.SharePointConnection.ExecuteCommand("Contoso.Commands.UpgradeSolution", _ solutionFullPath) End Sub End Class End Namespaceusing System; using Microsoft.VisualStudio.SharePoint; using Microsoft.VisualStudio.SharePoint.Deployment; using System.ComponentModel.Composition; namespace Contoso.DeploymentSteps.Upgrade { // Enables Visual Studio to discover and load this deployment step. [Export(typeof(IDeploymentStep))] // Specifies the ID for this new deployment step. [DeploymentStep("Contoso.DeploymentSteps.UpgradeSolution")] // Defines a new deployment step that can be used to upgrade a solution on a SharePoint site. internal class UpgradeStep : IDeploymentStep { private string solutionName; private string solutionFullPath; // Implements IDeploymentStep.Initialize. public void Initialize(IDeploymentStepInfo stepInfo) { stepInfo.Name = "Upgrade solution"; stepInfo.StatusBarMessage = "Upgrading solution..."; stepInfo.Description = "Upgrades the solution on the local machine."; } // Implements IDeploymentStep.CanExecute. Specifies whether the solution can be upgraded. public bool CanExecute(IDeploymentContext context) { // SharePoint returns all the installed solutions names in lower case. solutionName = (context.Project.Package.Model.Name + ".wsp").ToLower(); solutionFullPath = context.Project.Package.OutputPath; bool solutionExists = context.Project.SharePointConnection.ExecuteCommand<string, bool>( "Contoso.Commands.IsSolutionDeployed", solutionName); // Throw exceptions in error cases because deployment cannot proceed. if (context.Project.IsSandboxedSolution) { string sandboxMessage = "Cannot upgrade the solution. The upgrade deployment configuration " + "does not support Sandboxed solutions."; context.Logger.WriteLine(sandboxMessage, LogCategory.Error); throw new InvalidOperationException(sandboxMessage); } else if (!solutionExists) { string notDeployedMessage = string.Format("Cannot upgrade the solution. The IsSolutionDeployed " + "command cannot find the following solution: {0}.", solutionName); context.Logger.WriteLine(notDeployedMessage, LogCategory.Error); throw new InvalidOperationException(notDeployedMessage); } // Execute step and continue with deployment. return true; } // Implements IDeploymentStep.Execute. public void Execute(IDeploymentContext context) { context.Logger.WriteLine("Upgrading solution: " + solutionName, LogCategory.Status); context.Project.SharePointConnection.ExecuteCommand("Contoso.Commands.UpgradeSolution", solutionFullPath); } } }
Erstellen einer Bereitstellungskonfiguration, die den benutzerdefinierten Bereitstellungsschritt beinhaltet
Erstellen Sie eine Projekterweiterung für die neue Bereitstellungskonfiguration. Die neue Bereitstellungskonfiguration beinhaltet mehrere integrierte Bereitstellungsschritte und den neuen Bereitstellungsschritt für die Aktualisierung. Mit dieser Bereitstellungskonfiguration können SharePoint-Entwickler den Bereitstellungsschritt für Aktualisierungen sehr viel einfacher in SharePoint-Projekten verwenden.
Um die Bereitstellungskonfiguration zu erstellen, implementiert die Klasse die ISharePointProjectExtension-Schnittstelle. Implementieren Sie diese Schnittstelle immer dann, wenn Sie eine SharePoint-Projekterweiterung erstellen möchten.
So erstellen Sie die Bereitstellungskonfiguration
Doppelklicken Sie im Projekt DeploymentStepExtension auf die DeploymentConfigurationExtension-Codedatei.
Fügen Sie folgenden Code in die Datei ein.
Imports Microsoft.VisualStudio.SharePoint Imports Microsoft.VisualStudio.SharePoint.Deployment Imports System.ComponentModel.Composition Namespace Contoso.DeploymentSteps.Upgrade ' Export attribute: Enables Visual Studio to discover and load this project-level extension. ' DeploymentConfigurationExtension class: Defines a project-level extension. The extension creates ' a new deployment configuration that includes the upgrade deployment step. <Export(GetType(ISharePointProjectExtension))> _ Friend Class DeploymentConfigurationExtension Implements ISharePointProjectExtension Private Sub Initialize(ByVal projectService As ISharePointProjectService) _ Implements ISharePointProjectExtension.Initialize AddHandler projectService.ProjectInitialized, AddressOf ProjectInitialized End Sub ' Creates the new deployment configuration. Private Sub ProjectInitialized(ByVal Sender As Object, ByVal e As SharePointProjectEventArgs) Dim deploymentSteps As String() = New String() _ { DeploymentStepIds.PreDeploymentCommand, _ DeploymentStepIds.RecycleApplicationPool, _ "Contoso.DeploymentSteps.UpgradeSolution", _ DeploymentStepIds.PostDeploymentCommand _ } Dim retractionSteps As String() = New String() _ { DeploymentStepIds.RecycleApplicationPool, _ DeploymentStepIds.RetractSolution } Dim configuration As IDeploymentConfiguration = e.Project.DeploymentConfigurations.Add( _ "Upgrade", deploymentSteps, retractionSteps) configuration.Description = "This is the upgrade deployment configuration" End Sub End Class End Namespaceusing Microsoft.VisualStudio.SharePoint; using Microsoft.VisualStudio.SharePoint.Deployment; using System.ComponentModel.Composition; namespace Contoso.DeploymentSteps.Upgrade { // Enables Visual Studio to discover and load this project-level extension. [Export(typeof(ISharePointProjectExtension))] // Defines a project-level extension. The extension creates a new deployment configuration that includes the // upgrade deployment step. internal class DeploymentConfigurationExtension : ISharePointProjectExtension { // Implements ISharePointProjectExtension.Initialize. public void Initialize(ISharePointProjectService projectService) { projectService.ProjectInitialized += ProjectInitialized; } // Creates the new deployment configuration. private void ProjectInitialized(object sender, SharePointProjectEventArgs e) { string[] deploymentSteps = new string[] { DeploymentStepIds.PreDeploymentCommand, DeploymentStepIds.RecycleApplicationPool, "Contoso.DeploymentSteps.UpgradeSolution", DeploymentStepIds.PostDeploymentCommand }; string[] retractionSteps = new string[] { DeploymentStepIds.RecycleApplicationPool, DeploymentStepIds.RetractSolution }; IDeploymentConfiguration configuration = e.Project.DeploymentConfigurations.Add( "Upgrade", deploymentSteps, retractionSteps); configuration.Description = "This is the upgrade deployment configuration"; } } }
Erstellen der benutzerdefinierten SharePoint-Befehle
Erstellen Sie zwei benutzerdefinierte Befehle, die einen Aufruf in das SharePoint-Serverobjektmodell durchführen. Ein Befehl ermittelt, ob bereits eine Projektmappe bereitgestellt wurde. Der zweite Befehl aktualisiert eine Projektmappe.
So definieren Sie die SharePoint-Befehle
Doppelklicken Sie im Projekt SharePointCommands auf die Commands-Codedatei.
Fügen Sie folgenden Code in die Datei ein.
Imports System Imports System.IO Imports Microsoft.SharePoint Imports Microsoft.SharePoint.Administration Imports Microsoft.VisualStudio.SharePoint.Commands Namespace Contoso.DeploymentSteps.Upgrade Friend Class Commands ' Determines whether the specified solution has been deployed to the local SharePoint server. <SharePointCommand("Contoso.Commands.IsSolutionDeployed")> _ Private Function IsSolutionDeployed(ByVal context As ISharePointCommandContext, ByVal solutionName As String) As Boolean Dim solution As SPSolution = SPFarm.Local.Solutions(solutionName) Return solution IsNot Nothing End Function ' Upgrades the specified solution to the local SharePoint server. <SharePointCommand("Contoso.Commands.UpgradeSolution")> _ Private Sub UpgradeSolution(ByVal context As ISharePointCommandContext, ByVal fullWspPath As String) Dim solution As SPSolution = SPFarm.Local.Solutions(Path.GetFileName(fullWspPath)) If solution Is Nothing Then Throw New InvalidOperationException("The solution has not been deployed.") End If solution.Upgrade(fullWspPath) End Sub End Class End Namespaceusing System; using System.IO; using Microsoft.SharePoint; using Microsoft.SharePoint.Administration; using Microsoft.VisualStudio.SharePoint.Commands; namespace Contoso.DeploymentSteps.Upgrade { internal class Commands { // Determines whether the specified solution has been deployed to the local SharePoint server. [SharePointCommand("Contoso.Commands.IsSolutionDeployed")] private bool IsSolutionDeployed(ISharePointCommandContext context, string solutionName) { SPSolution solution = SPFarm.Local.Solutions[solutionName]; return solution != null; } // Upgrades the specified solution to the local SharePoint server. [SharePointCommand("Contoso.Commands.UpgradeSolution")] private void UpgradeSolution(ISharePointCommandContext context, string fullWspPath) { SPSolution solution = SPFarm.Local.Solutions[Path.GetFileName(fullWspPath)]; if (solution == null) { throw new InvalidOperationException("The solution has not been deployed."); } solution.Upgrade(fullWspPath); } } }
Checkpoint
An diesem Punkt in der exemplarischen Vorgehensweise ist der gesamte für den benutzerdefinierten Bereitstellungsschritt und die SharePoint-Befehle benötigte Code in die Projekte eingebunden. Erstellen Sie die Projektmappe, um sicherzustellen, dass beide Projekte ohne Fehler kompiliert werden.
So erstellen Sie die Projektmappe
- Klicken Sie im Menü Erstellen auf Projektmappe erstellen.
Erstellen eines VSIX-Pakets zum Bereitstellen der Erweiterung
Zum Bereitstellen der Erweiterung erstellen Sie anhand des VSIX-Projekts in der Lösung ein VSIX-Paket. Konfigurieren Sie zuerst das VSIX-Paket, indem Sie die im VSIX-Projekt enthaltene Datei "source.extension.vsixmanifest" ändern. Erstellen Sie anschließend das VSIX-Paket, indem Sie die Lösung erstellen.
So erstellen und konfigurieren Sie das VSIX-Paket
Doppelklicken Sie im Projektmappen-Explorer unter dem Projekt UpgradeDeploymentStep auf die Datei source.extension.vsixmanifest.
Die Datei wird von Visual Studio im Manifest-Editor geöffnet. Die Datei "source.extension.vsixmanifest" bildet die Grundlage für die Datei "extension.vsixmanifest", die für alle VSIX-Pakete erforderlich ist. Weitere Informationen zu dieser Datei finden Sie unter VSIX Extension Schema Reference.
Geben Sie im Feld Produktname den Namen Upgrade Deployment Step for SharePoint Projects ein.
Geben Sie im Feld Autor den Namen Contoso ein.
Geben Sie im Feld Beschreibung den Text Provides a custom upgrade deployment step that can be used in SharePoint projects ein.
Klicken Sie im Editor im Abschnitt Inhalt auf die Schaltfläche Inhalt hinzufügen.
Wählen Sie im Dialogfeld Inhalt hinzufügen im Listenfeldzum Auswählen eines Inhaltstyps die Option MEF-Komponente aus.
Tipp
Dieser Wert entspricht dem MefComponent-Element in der Datei "extension.vsixmanifest". Von diesem Element wird der Name einer Erweiterungsassembly im VSIX-Paket angegeben. Weitere Informationen finden Sie unter MEFComponent Element (VSX Schema).
Aktivieren Sie unter Quelle auswählen das Optionsfeld Projekt, und wählen Sie im zugehörigen Listenfeld den Eintrag DeploymentStepExtension aus.
Klicken Sie auf OK.
Klicken Sie im Manifest-Editor erneut auf die Schaltfläche Inhalt hinzufügen.
Wählen Sie im Dialogfeld Inhalt hinzufügen im Listenfeld zum Auswählen eines Inhaltstyps die Option Benutzerdefinierter Erweiterungstyp aus.
Tipp
Dieser Wert entspricht dem CustomExtension-Element in der Datei "extension.vsixmanifest". Dieses Element gibt eine benutzerdefinierte Erweiterung an, die Sie in die Visual Studio-Erweiterung einschließen möchten. Weitere Informationen finden Sie unter CustomExtension Element (VSX Schema).
Geben Sie im Textfeld Typ den Text SharePoint.Commands.v4 ein.
Tipp
Dieser Wert entspricht dem Type-Attribut des CustomExtension-Elements in der Datei "extension.vsixmanifest". Der Wert Sharepoint.Commands.v4 muss für alle benutzerdefinierten Erweiterungsassemblys angegeben werden, die benutzerdefinierte SharePoint-Befehle enthalten.
Aktivieren Sie unter Quelle auswählen das Optionsfeld Projekt, und wählen Sie im zugehörigen Listenfeld den Eintrag SharePointCommands aus.
Klicken Sie auf OK.
Klicken Sie im Menü Erstellen auf Projektmappe erstellen. Stellen Sie sicher, dass die Projektmappe fehlerfrei kompiliert werden kann.
Öffnen Sie den Buildausgabeordner für das Projekt UpgradeDeploymentStep. Stellen Sie sicher, dass dieser Ordner jetzt die Datei UpgradeDeploymentStep.vsix enthält.
Standardmäßig ist der Buildausgabeordner der Ordner "\bin\Debug" im Ordner mit der Projektdatei.
Vorbereiten des Tests für den Upgradebereitstellungsschritt
Um den Upgradebereitstellungsschritt zu testen, müssen Sie zuerst eine Beispielprojektmappe auf der SharePoint-Website bereitstellen. Debuggen Sie die Erweiterung zunächst in der experimentellen Instanz von Visual Studio. Erstellen Sie dann eine Listendefinition und eine Listeninstanz zum Testen des Bereitstellungsschritts, und stellen Sie diese auf der SharePoint-Website bereit. Anschließend bearbeiten Sie die Listendefinition und die Listeninstanz und stellen sie erneut bereit, um zu überprüfen, wie der Standardbereitstellungsprozess Projektmappen auf der SharePoint-Website überschreibt.
An späterer Stelle dieser exemplarischen Vorgehensweise ändern Sie die Listendefinition und Listeninstanz, um sie anschließend auf der SharePoint-Website zu aktualisieren.
So debuggen Sie die Erweiterung
Starten Sie Visual Studio erneut mit Administratorrechten, und öffnen Sie die Projektmappe "UpgradeDeploymentStep".
Öffnen Sie im Projekt "DeploymentStepExtension" die UpgradeStep-Codedatei, und fügen Sie in der ersten Codezeile in den CanExecute- und Execute-Methoden einen Haltepunkt hinzu.
Drücken Sie die Taste F5, um mit dem Debuggen zu beginnen.
Die Erweiterung wird unter "%UserProfile%\AppData\Local\Microsoft\VisualStudio\10.0Exp\Extensions\Contoso\Upgrade Deployment Step for SharePoint Projects\1.0" installiert, und eine experimentelle Instanz von Visual Studio wird gestartet. Sie testen den Upgradebereitstellungsschritt in dieser Instanz von Visual Studio.
So erstellen Sie die Listendefinition und die Listeninstanz
Zeigen Sie in der experimentellen Instanz von Visual Studio im Menü Datei auf Neu, und klicken Sie dann auf Projekt.
Erweitern Sie im Dialogfeld Neues Projekt den Eintrag Visual C#, erweitern Sie SharePoint, und klicken Sie dann auf 2010.
Stellen Sie im Kombinationsfeld am oberen Rand des Dialogfelds sicher, dass .NET Framework 3.5 ausgewählt ist. Projekte für Microsoft SharePoint Foundation 2010 und Microsoft SharePoint Server 2010 erfordern diese Version von .NET Framework.
Klicken Sie in der Liste der Projektvorlagen auf Listendefinition.
Geben Sie im Feld Name die Zeichenfolge EmployeesListDefinition ein.
Klicken Sie auf OK.
Geben Sie im Assistenten zum Anpassen von SharePoint die URL der Website ein, die Sie zum Debugging verwenden möchten.
Klicken Sie unter Wie lautet die Vertrauensebene für diese SharePoint-Lösung auf Als Farmlösung bereitstellen.
Tipp
Der Upgradebereitstellungsschritt unterstützt keine Sandkastenlösungen.
Klicken Sie auf Weiter.
Geben Sie auf der Seite Listendefinitionseinstellungen auswählen unter Wie lautet der Anzeigename der Listendefinition? den Namen Employees List ein.
Wählen Sie unter Welchen Typ weist die Listendefinition auf? den Eintrag Kontakte aus.
Stellen Sie sicher, dass das Kontrollkästchen Fügt eine Listeninstanz für diese Listendefinition hinzu aktiviert ist.
Klicken Sie auf Fertig stellen.
Visual Studio erstellt das Projekt und öffnet die Datei Elements.xml für die Listendefinition im Editor.
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Projektknoten EmployeesListDefinition, und klicken Sie auf Eigenschaften.
Deaktivieren Sie auf der Registerkarte SharePoint der Projekteigenschaften das Kontrollkästchen Nach Debuggen automatisch zurückziehen.
Erweitern Sie im Projektmappen-Explorer den Knoten ListDefinition1 und anschließend den untergeordneten Knoten ListInstance1.
Doppelklicken Sie auf die Datei Elements.xml, die ein untergeordnetes Element des Knotens ListInstance1 ist. Die Datei Elements.xml wird im Editor geöffnet.
Ersetzen Sie das Standard-XML in dieser Datei durch folgendes XML. Dieses XML ändert den Namen der Liste in Employees. Es fügt auch ein Element für einen Angestellten mit dem Namen Jim Hance hinzu.
<?xml version="1.0" encoding="utf-8"?> <Elements xmlns="https://schemas.microsoft.com/sharepoint/"> <ListInstance Title="Employees" OnQuickLaunch="TRUE" TemplateType="10000" Url="Lists/Employees" Description="Simple list to test upgrade deployment step"> <Data> <Rows> <Row> <Field Name="Title">Hance</Field> <Field Name="FirstName">Jim</Field> <Field Name="Company">Contoso</Field> </Row> </Rows> </Data> </ListInstance> </Elements>
So stellen Sie die Listendefinition und die Listeninstanz bereit
Klicken Sie mit der rechten Maustaste im Projektmappen-Explorer auf den Projektknoten EmployeesListDefinition.
Stellen Sie im Eigenschaftenfenster sicher, dass die Eigenschaft Aktive Bereitstellungskonfiguration auf Standard festgelegt ist (dies ist die Standardeinstellung).
Drücken Sie F5.
Überprüfen Sie, ob das Projekt erfolgreich erstellt wird und die neue Liste Employees auf der SharePoint-Website geöffnet wird und einen Eintrag für Jim Hance enthält.
Schließen Sie den Webbrowser.
So ändern Sie die Listendefinition und stellen die Listeninstanz erneut bereit
Doppelklicken Sie im Projekt EmployeesListDefinition-Projekt auf die Datei Elements.xml, die ein untergeordnetes Element des Projektelements ListInstance1 ist.
Entfernen Sie das Data-Element und die untergeordneten Elemente, um den Eintrag für Jim Hance aus der Liste zu entfernen. Wenn Sie fertig sind, sollte die Datei das folgende XML enthalten.
<?xml version="1.0" encoding="utf-8"?> <Elements xmlns="https://schemas.microsoft.com/sharepoint/"> <ListInstance Title="Employees" OnQuickLaunch="TRUE" TemplateType="10000" Url="Lists/Employees" Description="Simple list to test upgrade deployment step"> </ListInstance> </Elements>Doppelklicken Sie auf die Datei Schema.xml, die ein untergeordnetes Element des Projektelements ListDefinition1 ist.
Suchen Sie in dieser Datei nach der Zeichenfolge BaseViewID="1". Diese Zeichenfolge ist ein Attribut für ein View-Element, das Sie in den nächsten Schritten ändern.
Suchen Sie unter diesem View-Element nach dem untergeordneten ViewFields-Element.
Entfernen Sie unter dem ViewFields-Element die beiden untergeordneten FieldRef-Elemente, bei denen das Name-Attribut auf Attachments bzw. HomePhone festgelegt ist. Durch diese Aktion werden diese Felder nicht mehr in der Standardansicht der Liste Employees auf der SharePoint-Website angezeigt. Wenn Sie fertig sind, sollte das ViewFields-Element über den folgenden Inhalt verfügen.
<ViewFields> <FieldRef Name="LinkTitle" /> <FieldRef Name="FirstName" /> <FieldRef Name="Company" /> <FieldRef Name="WorkPhone" /> <FieldRef Name="Email" /> </ViewFields>Drücken Sie F5. Überprüfen Sie, ob das Dialogfeld Bereitstellungskonflikte angezeigt wird. Dieses Dialogfeld wird angezeigt, wenn Visual Studio versucht, eine Projektmappe (die Listeninstanz) auf einer SharePoint-Website bereitzustellen, auf der diese Projektmappe schon bereitgestellt wurde.
Später in dieser exemplarischen Vorgehensweise werden Sie feststellen, dass dieses Dialogfeld nicht angezeigt wird, wenn Sie den Upgradebereitstellungsschritt ausführen.
Klicken Sie auf Automatisch lösen. Die Listeninstanz auf der SharePoint-Website wird gelöscht, das Listenelement wird im Projekt bereitgestellt, und anschließend wird die Liste Employees auf der SharePoint-Website geöffnet.
Überprüfen Sie folgende Details:
Die Spalten Anlagen und Telefon (privat) werden nicht in dieser Ansicht der Liste angezeigt.
Die Liste ist jetzt leer. Als Sie die Projektmappe mit der Bereitstellungskonfiguration Standard erneut bereitgestellt haben, wurde die Liste Employees durch die neue leere Liste im Projekt ersetzt.
Testen des Bereitstellungsschritts
Jetzt können Sie den Upgradebereitstellungsschritt testen. Fügen Sie zuerst der Listeninstanz in SharePoint ein Element hinzu. Ändern Sie die Listendefinition und die Listeninstanz, und aktualisieren Sie sie dann auf der SharePoint-Website, um zu bestätigen, dass das neue Element nicht durch den Upgradebereitstellungsschritt überschrieben wird.
So fügen Sie manuell ein neues Listenelement hinzu
Klicken Sie im Menüband auf der SharePoint-Website auf die Registerkarte Elemente.
Klicken Sie in der Gruppe Neu auf Neues Element.
Geben Sie im Feld Nachname den Wert Ruth ein.
Geben Sie im Feld Vorname den Wert Andy ein.
Geben Sie im Feld Firma den Wert Contoso ein.
Klicken Sie auf Speichern. Überprüfen Sie, ob das neue Element in der Liste angezeigt wird. Später in dieser exemplarischen Vorgehensweise verwenden Sie dieses Element, um sicherzustellen, dass der Upgradebereitstellungsschritt den Inhalt dieser Liste nicht überschreibt.
Schließen Sie den Webbrowser.
So testen Sie den Upgradebereitstellungsschritt
Klicken Sie in der experimentellen Instanz von Visual Studio im Projektmappen-Explorer auf den Projektknoten EmployeesListDefinition.
Legen Sie im Eigenschaftenfenster die Eigenschaft Aktive Bereitstellungskonfiguration auf Upgrade fest. Dies ist die benutzerdefinierte Bereitstellungskonfiguration, die den neuen Upgradebereitstellungsschritt beinhaltet.
Doppelklicken Sie auf die Datei Schema.xml, die ein untergeordnetes Element des Projektelements ListDefinition1 ist.
Suchen Sie nach dem zuvor geänderten ViewFields-Element.
Entfernen Sie unter dem ViewFields-Element die beiden untergeordneten FieldRef-Elemente, bei denen das Name-Attribut auf WorkPhone bzw. Email festgelegt ist. Durch diese Aktion werden diese Felder nicht mehr in der Standardansicht der Liste Employees auf der SharePoint-Website angezeigt. Wenn Sie fertig sind, sollte das ViewFields-Element über den folgenden Inhalt verfügen.
<ViewFields> <FieldRef Name="LinkTitle" /> <FieldRef Name="FirstName" /> <FieldRef Name="Company" /> </ViewFields>Drücken Sie F5. Überprüfen Sie, ob die Codeausführung in der anderen Instanz von Visual Studio an dem Haltepunkt unterbrochen wird, den Sie zuvor in der CanExecute-Methode festgelegt haben.
Drücken Sie erneut F5. Überprüfen Sie, ob der Code an dem Haltepunkt unterbrochen wird, den Sie zuvor in der Execute-Methode festgelegt haben.
Drücken Sie ein letztes Mal F5. Die SharePoint-Website wird mit der Liste Employees geöffnet.
Klicken Sie im Schnellstartbereich auf die Liste Employees.
Überprüfen Sie folgende Details:
Das Andy Ruth-Element, das Sie zuvor manuell hinzugefügt haben, befindet sich nach wie vor in der Liste.
Die Spalten Telefon (geschäftlich) und E-Mail-Adresse werden in dieser Ansicht der Liste nicht angezeigt.
Die Bereitstellungskonfiguration Upgrade ändert die vorhandene Employees-Listeninstanz auf der SharePoint-Website. Wenn Sie die Bereitstellungskonfiguration Standard anstelle der Konfiguration Upgrade verwendet hätten, wäre ein Bereitstellungskonflikt aufgetreten. Visual Studio würde den Konflikt lösen, indem es die Liste Employees ersetzt. Das Andy Ruth-Element würde dabei gelöscht werden.
Bereinigen des Entwicklungscomputers
Nach dem Abschluss der Tests für den Upgradebereitstellungsschritt entfernen Sie die Listeninstanz und die Listendefinition von der SharePoint-Website. Entfernen Sie dann die Bereitstellungsschritterweiterung aus Visual Studio.
So entfernen Sie die Listeninstanz von der SharePoint-Website
Öffnen Sie die Liste Employees auf der SharePoint-Website, wenn sie nicht bereits geöffnet ist.
Klicken Sie im Menüband auf der SharePoint-Website auf die Registerkarte Liste.
Klicken Sie auf der Registerkarte Liste in der Gruppe Einstellungen auf Listeneinstellungen.
Klicken Sie unter Berechtigungen und Verwaltung auf Diese Liste löschen. Klicken Sie auf OK, um zu bestätigen, dass Sie die Liste an den Papierkorb senden möchten.
Schließen Sie den Webbrowser.
So entfernen Sie die Listendefinition von der SharePoint-Website
Klicken Sie in der experimentellen Instanz von Visual Studio im Menü Erstellen auf Zurückziehen.
Visual Studio nimmt die Listendefinition von der SharePoint-Website zurück.
So deinstallieren Sie die Erweiterung
Klicken Sie in der experimentellen Instanz von Visual Studio im Menü Extras auf Erweiterungs-Manager.
Das Dialogfeld Erweiterungs-Manager wird geöffnet.
Klicken Sie in der Liste der Erweiterungen auf Deployment Step for SharePoint Projects, und klicken Sie dann auf Deinstallieren.
Klicken Sie im angezeigten Dialogfeld auf Ja, um zu bestätigen, dass Sie die Erweiterung deinstallieren möchten.
Klicken Sie auf Jetzt neu starten, um die Deinstallation abzuschließen.
Schließen Sie beide Instanzen von Visual Studio (die experimentelle Instanz und die Instanz von Visual Studio, in der die Projektmappe "UpgradeDeploymentStep" geöffnet ist).