Podrobné pokyny: Rozšíření Průzkumníka serveru pro zobrazení webových částí
V Visual Studio 2010, můžete použít SharePoint připojení uzel Server Explorer zobrazení komponent na weby služby SharePoint. Existují však některé součásti, Server Explorer ve výchozím nastavení nezobrazuje. V tomto návodu je rozšířit Server Explorer tak, aby zobrazil Galerie webových částí na každé připojení webu služby SharePoint.
Tento návod demonstruje následující úkoly:
Vytvoření rozšíření Visual Studio, která rozšiřuje Server Explorer následujícími způsoby:
Přidává nový uzel Galerie webových částí za každý uzel serveru SharePoint v Průzkumníku serveru. Tento nový uzel obsahuje podřízené uzly, které představují jednotlivé webové část v Galerii webových částí na webu.
Definuje nový typ uzlu, který představuje instanci webové části. Tento nový typ uzlu je základem pro podřízené uzly pod novým uzlem Galerie webových částí. Nový typ uzlu webová část zobrazuje informace v Vlastnosti představuje webová část okna. Typ uzlu také položku vlastní místní nabídky, která slouží jako výchozí bod pro provádění jiných úkolů souvisejících s webovou částí.
Vytvoření vlastní dva SharePoint příkazy jsou volány sestavení rozšíření. Příkazy služby SharePoint jsou metody, které lze volat sestavení rozšíření použití rozhraní API v objektovém modelu serveru SharePoint. V tomto návodu vytvořit příkazy, které načítají informace o webové části z místního serveru SharePoint na vývojovém počítači. Další informace naleznete v tématu Volání do objektových modelů služby SharePoint.
Vytváření balíčku rozšíření aplikace Visual Studio (VSIX) pro nasazení rozšíření.
Ladění a testování rozšíření.
Poznámka
Alternativní verze návodu používající objektový model klienta SharePoint namísto serveru objektový model, viz Podrobné pokyny: Volání do modelu klientského objektu služby SharePoint v příponě aplikace Průzkumník serveru.
Požadavky
Ve vývojovém počítači potřebujete následující součásti pro dokončení tohoto návodu:
Podporované vydání systému Microsoft Windows, SharePoint a Visual Studio. Další informace naleznete v tématu Requirements for Developing SharePoint Solutions.
Rozhraní Visual Studio 2010 SDK. Tento návod používá šablonu Projekt VSIX v sadě SDK pro vytvoření balíčku VSIX k nasazení položky projektu. Další informace naleznete v tématu Rozšíření nástroje SharePoint v aplikaci Visual Studio.
Znalost následujících konceptů je užitečná, ale není požadována k dokončení návodu:
Pomocí objektového modelu serveru SharePoint. Další informace naleznete v pomocí objektového modelu služby SharePoint Foundation Server-Side.
Webové části v řešení služby SharePoint. Další informace naleznete v Přehled webových částí.
Vytváření projektů
Chcete-li dokončit tento návod, je nutné vytvořit tři projekty:
VSIX projektu vytvořit balíček zavedení rozšíření VSIX.
Projekt knihovny třídy, který implementuje rozšíření. Tento projekt musí zaměřit .NET Framework 4.
Projekt knihovny třídy definující vlastní příkazy služby SharePoint. Tento projekt musí zaměřit..NET Framework 3.5.
Začněte postup vytvořením projektů.
Pro vytvoření projektu VSIX
Spusťte nástroj Visual Studio.
V nabídce File (Soubor) přejděte na příkaz New (Nový) a klepněte na příkaz Project (Projekt).
V Nový projekt dialogovém okně pole, rozbalte položku Visual C# nebo Visual Basic uzly a pak vyberte rozšiřitelnosti uzlu.
Poznámka
Uzel Rozšiřitelnost je k dispozici pouze v případě, že nainstalujete Visual Studio 2010 SDK. Další informace naleznete ve výše uvedeném oddílu požadavků.
V poli se seznamem v horní části dialogového okna zvolte Rozhraní .NET framework 4.
Vyberte VSIX projekt šablony.
Do pole Název zadejte text WebPartNode.
Klepněte na tlačítko OK.
Visual Studio přidá WebPartNode projekt do Průzkumníku řešení.
Chcete-li vytvořit projekt rozšíření
V Průzkumníku řešení klikněte pravým tlačítkem myši na uzel řešení, klikněte na Přidat a pak na Nový projekt.
Poznámka
V projektech v jazyce Visual Basic se uzel řešení zobrazí v Průzkumníku řešení pouze pokud je označeno zaškrtávací políčko Vždy zobrazit řešení Obecné, projekty a řešení, dialogové okno Možnosti.
V dialogovém okně Nový projekt rozbalte uzel Visual C# nebo Visual Basic a potom klikněte na Windows.
V poli se seznamem v horní části dialogového okna zvolte Rozhraní .NET framework 4.
Zvolte šablonu projektu Knihovna tříd.
V poli Název zadejte WebPartNodeExtension.
Klepněte na tlačítko OK.
Visual StudioPřidá WebPartNodeExtension projektu řešení a otevře soubor výchozí kód Class1.
Odstraňte soubor kódu Class1 z projektu.
Vytvořte projekt příkazy služby SharePoint
V Průzkumníku řešení klikněte pravým tlačítkem myši na uzel řešení, klikněte na Přidat a pak na Nový projekt.
Poznámka
V projektech v jazyce Visual Basic se uzel řešení zobrazí v Průzkumníku řešení pouze pokud je označeno zaškrtávací políčko Vždy zobrazit řešení Obecné, projekty a řešení, dialogové okno Možnosti.
V dialogovém okně Nový projekt rozbalte uzel Visual C# nebo Visual Basic a potom klikněte na Windows.
V poli se seznamem v horní části dialogového okna zvolte Rozhraní .NET framework 3.5.
Zvolte šablonu projektu Knihovna tříd.
V název zadejte WebPartCommands.
Klikněte na tlačítko OK.
Visual StudioPřidá WebPartCommands projektu řešení a otevře soubor výchozí kód Class1.
Odstraňte soubor kódu Class1 z projektu.
Konfigurace projekty
Před píšete kód vytvořit rozšíření, musíte přidat kód soubory a odkazy na sestavení a konfigurovat nastavení projektu.
Konfigurace WebPartNodeExtension projektu
V projektu WebPartNodeExtension přidáte kód čtyři soubory s následujícími názvy:
SiteNodeExtension
WebPartNodeTypeProvider
WebPartNodeInfo
WebPartCommandIds
V nabídce Projekt klepněte na příkaz Přidat odkaz.
Na záložce .NET stiskněte klávesu CTRL a pak zvolte následující sestavení a potom klikněte na tlačítko OK:
Microsoft.VisualStudio.SharePoint
System.ComponentModel.Composition
System.Windows.Forms
V Aplikaci Solution Explorer, klepněte pravým tlačítkem myši WebPartNodeExtension uzlu projektu a vyberte Vlastnosti.
Otevře se Projekt designer.
Klikněte na záložku Aplikace.
V výchozí obor názvů pole (C#) nebo oboru názvů Root pole (Visual Basic), typ ServerExplorer.SharePointConnections.WebPartNode.
Konfigurace WebPartCommands projektu
V WebPartCommands projektu přidáte kód soubor s názvem WebPartCommands.
V Aplikaci Solution Explorer, vyberte WebPartCommands projektu uzlu.
V nabídce Projekt vyberte Přidat existující položku.
V Přidat existující položku dialogové okno, vyhledejte složku obsahující soubory projektu WebPartNodeExtension kód.
Vyberte kód soubory WebPartNodeInfo a WebPartCommandIds.
Klepněte na rozevírací nabídku pro Přidat tlačítko a vyberte Přidat jako odkaz.
Visual StudioPřidá kód soubory do projektu WebPartCommands jako odkazy. To znamená, že kód soubory jsou umístěny v WebPartNodeExtension projektu, ale také zjišťují kódu v souborech v projektu WebPartCommands.
V nabídce Projekt klepněte na příkaz Přidat odkaz.
Na záložce .NET stiskněte klávesu CTRL a pak zvolte následující sestavení a potom klikněte na tlačítko OK:
Microsoft.SharePoint
Microsoft.VisualStudio.SharePoint.Commands
V Aplikaci Solution Explorer, klepněte pravým tlačítkem myši WebPartCommands uzlu projektu a vyberte Vlastnosti.
Otevře se Projekt designer.
Klikněte na záložku Aplikace.
V výchozí obor názvů pole (C#) nebo oboru názvů Root pole (Visual Basic), typ ServerExplorer.SharePointConnections.WebPartNode.
Vytvoření ikony pro nové uzly
Vytvořte dvě ikony pro rozšíření Průzkumníka serveru: ikonu pro nový uzel Galerie webových částí a jinou ikonu pro každý podřízený uzel webové části v rámci uzlu Galerie webových částí. Dále v tomto návodu zapíšete kód, který přidruží tyto ikony uzlům.
Chcete-li vytvořit ikony pro uzly
V Aplikaci Solution Explorer, klepněte pravým tlačítkem myši WebPartNodeExtension uzlu projektu a vyberte Vlastnosti.
V nabídce Vlastnosti zvolte Vlastnosti WebPartNodeExtension.
Otevře se Projekt designer.
Klepněte zdroje kartu.
Klikněte na Tento projekt neobsahuje výchozí soubor prostředků. Chcete-li vytvořit, klikněte sem.
Visual Studiovytvoří soubor prostředků a otevře v návrháři.
V horní části návrháře, klepněte na šipku dolů Přidat a klepněte na tlačítko Přidat novou ikonu.
Napište WebPartsNode pro nový název ikony a potom klikněte na Přidat.
Nová ikona se otevře v Editoru obrázků.
Upravte verzi 16x16 ikony tak, aby měla vyhovující vzor a potom uložte soubor ikony.
Vyberte ikonu verze 32 x 32.
Na obraz nabídce vyberte Odstranit typ obrázku.
Opakujte kroky 5 až 9 pro přidání druhé ikony do zdrojů projektu. Pojmenujte tuto ikonu WebPart.
V Řešení prozkoumatr pod zdroje složku WebPartNodeExtension projektu vyberte WebPartsNode.ico.
V okně Vlastnosti klikněte na tlačítko rozevíracího seznamu vedle Sestavení akce a potom zvolte Vestavěný prostředek.
Poslední dva kroky zopakujte pro WebPart.ico.
Přidání uzlu Galerie webových částí do Průzkumníku serveru
Vytvořte třídu, která přidá nový uzel Galerie webových částí do každého uzlu webu SharePoint. Chcete-li přidat nový uzel, třída implementuje rozhraní IExplorerNodeTypeExtension. Implementujte toto rozhraní pokaždé, když chcete rozšířit chování existujícího uzlu v Průzkumníku serveru, například přidání nového podřízeného uzlu k uzlu.
Chcete-li přidat uzel Galerie webových částí do Průzkumníku serveru
V projektu WebPartNodeExtension poklikejte na soubor kódu SiteNodeExtension.
Do tohoto souboru vložte následující kód.
Poznámka
Po přidání tohoto kódu bude mít projekt několik chyb kompilace. Těmto chybám předejdete přidáním kódu v dalších krocích.
Imports System.Collections.Generic Imports System.ComponentModel.Composition Imports Microsoft.VisualStudio.SharePoint.Explorer Namespace ServerExplorer.SharePointConnections.WebPartNode ' Export attribute: Enables Visual Studio to discover and load this extension. ' ExplorerNodeType attribute: Indicates that this class extends SharePoint site nodes in Server Explorer. ' WebPartNodeTypeProvider class: Represents an extension of SharePoint site nodes in Server Explorer. <Export(GetType(IExplorerNodeTypeExtension))> _ <ExplorerNodeType(ExplorerNodeTypes.SiteNode)> _ Friend Class SiteNodeExtension Implements IExplorerNodeTypeExtension Private Sub Initialize(ByVal nodeType As IExplorerNodeType) _ Implements IExplorerNodeTypeExtension.Initialize ' The NodeChildrenRequested event is raised when the user expands the ' SharePoint site node in Server Explorer. AddHandler nodeType.NodeChildrenRequested, AddressOf NodeChildrenRequested End Sub ' Creates the new Web Part Gallery node with the specified icon. Private Sub NodeChildrenRequested(ByVal Sender As Object, ByVal e As ExplorerNodeEventArgs) ' The CreateWebPartNodes argument is a delegate that Visual Studio calls ' to create the child nodes under the Web Part Gallery node. e.Node.ChildNodes.AddFolder("Web Part Gallery", My.Resources.WebPartsNode.ToBitmap(), _ AddressOf CreateWebPartNodes) End Sub ' Creates all of the individual Web Part nodes under the new Web Part Gallery node. Private Sub CreateWebPartNodes(ByVal parentNode As IExplorerNode) ' Call the custom SharePoint command to get items from the Web Part gallery. Dim webParts = parentNode.Context.SharePointConnection.ExecuteCommand(Of WebPartNodeInfo())( _ WebPartCommandIds.GetWebParts) If webParts IsNot Nothing Then For Each webPart As WebPartNodeInfo In webParts ' Create a new annotation object to store the current Web Part item with the new node. Dim annotations = New Dictionary(Of Object, Object)() annotations.Add(GetType(WebPartNodeInfo), webPart) ' Create the new node for the current Web Part item. parentNode.ChildNodes.Add(WebPartNodeTypeProvider.WebPartNodeTypeId, _ webPart.Name, annotations) Next End If End Sub End Class End Namespace
using System.Collections.Generic; using System.ComponentModel.Composition; using Microsoft.VisualStudio.SharePoint.Explorer; namespace ServerExplorer.SharePointConnections.WebPartNode { // Enables Visual Studio to discover and load this extension. [Export(typeof(IExplorerNodeTypeExtension))] // Indicates that this class extends SharePoint site nodes in Server Explorer. [ExplorerNodeType(ExplorerNodeTypes.SiteNode)] // Represents an extension of SharePoint site nodes in Server Explorer. internal class SiteNodeExtension : IExplorerNodeTypeExtension { public void Initialize(IExplorerNodeType nodeType) { // The NodeChildrenRequested event is raised when the user expands the // SharePoint site node in Server Explorer. nodeType.NodeChildrenRequested += NodeChildrenRequested; } // Creates the new Web Part Gallery node with the specified icon. private void NodeChildrenRequested(object sender, ExplorerNodeEventArgs e) { // The CreateWebPartNodes argument is a delegate that Visual Studio calls // to create the child nodes under the Web Part Gallery node. e.Node.ChildNodes.AddFolder("Web Part Gallery", Properties.Resources.WebPartsNode.ToBitmap(), CreateWebPartNodes); } // Creates all of the individual Web Part nodes under the new Web Part Gallery node. private void CreateWebPartNodes(IExplorerNode parentNode) { // Call the custom SharePoint command to get items from the Web Part gallery. var webParts = parentNode.Context.SharePointConnection.ExecuteCommand<WebPartNodeInfo[]>( WebPartCommandIds.GetWebParts); if (webParts != null) { foreach (WebPartNodeInfo webPart in webParts) { // Create a new annotation object to store the current Web Part item with the new node. var annotations = new Dictionary<object, object>() { { typeof(WebPartNodeInfo), webPart } }; // Create the new node for the current Web Part item. parentNode.ChildNodes.Add(WebPartNodeTypeProvider.WebPartNodeTypeId, webPart.Name, annotations); } } } } }
Definování typu uzlu, který představuje webovou část
Vytvořte třídu, která definuje nový typ uzlu, který představuje webovou část. Tento nový typ uzel používá Visual Studio Zobrazit podřízené uzly pod Galerie webových částí uzel. Každý z těchto podřízených uzlů představuje jedinou webovou část na webu služby SharePoint.
Chcete-li definovat nový typ uzlu, třída implementuje rozhraní IExplorerNodeTypeProvider. Implementujte toto rozhraní, kdykoli budete chtít definovat nový typ uzlu v Průzkumníku serveru.
Chcete-li definovat uzel webové části napište
V projektu WebPartNodeExtension poklepejte na soubor WebPartNodeTypeProvder kód.
Do tohoto souboru vložte následující kód.
Imports System Imports System.Collections.Generic Imports System.Windows.Forms Imports System.ComponentModel.Composition Imports Microsoft.VisualStudio.SharePoint Imports Microsoft.VisualStudio.SharePoint.Explorer Namespace ServerExplorer.SharePointConnections.WebPartNode ' Export attribute: Enables Visual Studio to discover and load this extension. ' ExplorerNodeType attribute: Specifies the ID for this new node type. ' WebPartNodeTypeProvider class: Defines a new node type that represents a Web Part on a SharePoint site. <Export(GetType(IExplorerNodeTypeProvider))> _ <ExplorerNodeType(WebPartNodeTypeProvider.WebPartNodeTypeId)> _ Friend Class WebPartNodeTypeProvider Implements IExplorerNodeTypeProvider Friend Const WebPartNodeTypeId As String = "Contoso.WebPart" Private Sub InitializeType(ByVal typeDefinition As IExplorerNodeTypeDefinition) _ Implements IExplorerNodeTypeProvider.InitializeType typeDefinition.DefaultIcon = My.Resources.WebPart.ToBitmap() typeDefinition.IsAlwaysLeaf = True AddHandler typeDefinition.NodePropertiesRequested, AddressOf NodePropertiesRequested End Sub ' Retrieves properties that are displayed in the Properties window when ' a Web Part node is selected. Private Sub NodePropertiesRequested(ByVal Sernder As Object, _ ByVal e As ExplorerNodePropertiesRequestedEventArgs) Dim nodeInfo = e.Node.Annotations.GetValue(Of WebPartNodeInfo)() ' Call the custom SharePoint command to get the Web Part properties. Dim properties As Dictionary(Of String, String) = _ e.Node.Context.SharePointConnection.ExecuteCommand( _ Of WebPartNodeInfo, Dictionary(Of String, String))( WebPartCommandIds.GetWebPartProperties, nodeInfo) Dim propertySource As Object = e.Node.Context.CreatePropertySourceObject(properties) e.PropertySources.Add(propertySource) End Sub End Class End Namespace
using System; using System.Collections.Generic; using System.Windows.Forms; using System.ComponentModel.Composition; using Microsoft.VisualStudio.SharePoint; using Microsoft.VisualStudio.SharePoint.Explorer; namespace ServerExplorer.SharePointConnections.WebPartNode { // Enables Visual Studio to discover and load this extension. [Export(typeof(IExplorerNodeTypeProvider))] // Specifies the ID for this new node type. [ExplorerNodeType(WebPartNodeTypeProvider.WebPartNodeTypeId)] // Defines a new node type that represents a Web Part on a SharePoint site. internal class WebPartNodeTypeProvider : IExplorerNodeTypeProvider { internal const string WebPartNodeTypeId = "Contoso.WebPart"; public void InitializeType(IExplorerNodeTypeDefinition typeDefinition) { typeDefinition.DefaultIcon = Properties.Resources.WebPart.ToBitmap(); typeDefinition.IsAlwaysLeaf = true; typeDefinition.NodePropertiesRequested += NodePropertiesRequested; } // Retrieves properties that are displayed in the Properties window when // a Web Part node is selected. private void NodePropertiesRequested(object sender, ExplorerNodePropertiesRequestedEventArgs e) { var webPartNodeInfo = e.Node.Annotations.GetValue<WebPartNodeInfo>(); // Call the custom SharePoint command to get the Web Part properties. Dictionary<string, string> properties = e.Node.Context.SharePointConnection.ExecuteCommand< WebPartNodeInfo, Dictionary<string, string>>( WebPartCommandIds.GetWebPartProperties, webPartNodeInfo); object propertySource = e.Node.Context.CreatePropertySourceObject(properties); e.PropertySources.Add(propertySource); } } }
Definice třídy dat webové části
Definujte třídu, která obsahuje data o jednu webovou část na webu SharePoint. Dále v tomto návodu vytvoříte vlastní příkaz SharePoint, který načítá data o jednotlivých webových částí na webu a potom přiřadí data instance této třídy.
Definovat třídy dat webové části
V projektu WebPartNodeExtension poklepejte na soubor WebPartNodeInfo kód.
Do tohoto souboru vložte následující kód.
Imports System Namespace ServerExplorer.SharePointConnections.WebPartNode ' Contains basic data about a single Web Part on the SharePoint site. This class is ' serializable so that instances of it can be sent between the WebPartNode and ' WebPartCommands assemblies. <Serializable()> _ Public Class WebPartNodeInfo Private siteIdValue As Guid Public Property SiteId As Guid Get Return siteIdValue End Get Set(ByVal value As Guid) siteIdValue = value End Set End Property Private idValue As Integer Public Property Id As Integer Get Return idValue End Get Set(ByVal value As Integer) idValue = value End Set End Property Private uniqueIdValue As Guid Public Property UniqueId As Guid Get Return uniqueIdValue End Get Set(ByVal value As Guid) uniqueIdValue = value End Set End Property Private nameValue As String Public Property Name As String Get Return nameValue End Get Set(ByVal value As String) nameValue = value End Set End Property Private imageUrlValue As String Public Property ImageUrl As String Get Return imageUrlValue End Get Set(ByVal value As String) imageUrlValue = value End Set End Property End Class End Namespace
using System; namespace ServerExplorer.SharePointConnections.WebPartNode { // Contains basic data about a single Web Part on the SharePoint site. This class is // serializable so that instances of it can be sent between the WebPartNode and // WebPartCommands assemblies. [Serializable] public class WebPartNodeInfo { public Guid SiteId { get; set; } public int Id { get; set; } public Guid UniqueId { get; set; } public string Name { get; set; } public string ImageUrl { get; set; } } }
Definování ID příkazu SharePoint
Definujte několik řetězců, které identifikují vlastní příkazy služby SharePoint. Tyto příkazy budou implementovat dále v tomto návodu.
Definovat ID příkazu
V projektu WebPartNodeExtension poklepejte na soubor WebPartCommandIds kód.
Do tohoto souboru vložte následující kód.
Namespace ServerExplorer.SharePointConnections.WebPartNode Public Class WebPartCommandIds Public Const GetWebParts As String = "WebPart.GetWebParts" Public Const GetWebPartProperties As String = "WebPart.GetProperties" End Class End Namespace
namespace ServerExplorer.SharePointConnections.WebPartNode { public static class WebPartCommandIds { public const string GetWebParts = "WebPart.GetWebParts"; public const string GetWebPartProperties = "WebPart.GetProperties"; } }
Vytváření vlastních příkazů služby SharePoint
Vytvořte vlastní příkazy, které volají do modelu objektu serveru SharePoint k načtení dat o webových částí na webu SharePoint. Každý příkaz je metoda, která má SharePointCommandAttribute použije jej.
Definování příkazů služby SharePoint
V projektu WebPartCommands poklepejte na soubor WebPartCommands kód.
Do tohoto souboru vložte následující kód.
Imports System.Collections.Generic Imports Microsoft.SharePoint Imports Microsoft.VisualStudio.SharePoint.Commands Namespace ServerExplorer.SharePointConnections.WebPartNode Friend Class WebPartsCommands ' Gets data for each Web Part on the SharePoint site, and returns an array of ' serializable objects that contain the data. <SharePointCommand(WebPartCommandIds.GetWebParts)> _ Private Shared Function GetWebParts(ByVal context As ISharePointCommandContext) As WebPartNodeInfo() Dim nodeInfos = New List(Of WebPartNodeInfo)() Dim webParts As SPListItemCollection = context.Site.GetCatalog( _ SPListTemplateType.WebPartCatalog).Items For Each webPart As SPListItem In webParts Dim nodeInfo As WebPartNodeInfo = New WebPartNodeInfo() With nodeInfo .Id = webPart.ID .SiteId = webPart.ParentList.ParentWeb.ID .Name = webPart.Title .UniqueId = webPart.UniqueId .ImageUrl = webPart.ParentList.ImageUrl End With nodeInfos.Add(nodeInfo) Next Return nodeInfos.ToArray() End Function ' Gets additional property data for a specific Web Part. <SharePointCommand(WebPartCommandIds.GetWebPartProperties)> _ Private Shared Function GetWebPartProperties(ByVal context As ISharePointCommandContext, _ ByVal webPartNodeInfo As WebPartNodeInfo) As Dictionary(Of String, String) Dim webParts As SPList = context.Site.GetCatalog(SPListTemplateType.WebPartCatalog) Dim webPart As SPListItem = webParts.Items(webPartNodeInfo.UniqueId) Return SharePointCommandServices.GetProperties(webPart) End Function End Class End Namespace
using System.Collections.Generic; using Microsoft.SharePoint; using Microsoft.VisualStudio.SharePoint.Commands; namespace ServerExplorer.SharePointConnections.WebPartNode { internal class WebPartsCommands { // Gets data for each Web Part on the SharePoint site, and returns an array of // serializable objects that contain the data. [SharePointCommand(WebPartCommandIds.GetWebParts)] private static WebPartNodeInfo[] GetWebParts(ISharePointCommandContext context) { var nodeInfos = new List<WebPartNodeInfo>(); SPListItemCollection webParts = context.Site.GetCatalog( SPListTemplateType.WebPartCatalog).Items; foreach (SPListItem webPart in webParts) { WebPartNodeInfo nodeInfo = new WebPartNodeInfo { Id = webPart.ID, SiteId = webPart.ParentList.ParentWeb.ID, Name = webPart.Title, UniqueId = webPart.UniqueId, ImageUrl = webPart.ParentList.ImageUrl }; nodeInfos.Add(nodeInfo); } return nodeInfos.ToArray(); } // Gets additional property data for a specific Web Part. [SharePointCommand(WebPartCommandIds.GetWebPartProperties)] private static Dictionary<string, string> GetWebPartProperties(ISharePointCommandContext context, WebPartNodeInfo nodeInfo) { SPList webParts = context.Site.GetCatalog(SPListTemplateType.WebPartCatalog); SPListItem webPart = webParts.Items[nodeInfo.UniqueId]; return SharePointCommandServices.GetProperties(webPart); } } }
Checkpoint
Návod pro veškerý kód v této fázi Galerie webových částí uzlu a příkazy služby SharePoint jsou nyní v projektech. Vytvoření řešení se ujistěte, že oba projekty kompilovat bez chyb.
Sestavte řešení
- V nabídce Sestavit zvolte Sestavit řešení.
Vytvoření balíčku VSIX k nasazení přípony
Chcete-li nasadit rozšíření, použijte VSIX projekt ve vašem řešení k vytvoření VSIX balíčku. Nejprve nakonfigurujte VSIX balíček úpravou souboru source.extension.vsixmanifest, který je součástí projektu VSIX. Potom vytvořte VSIX balíček vytvořením řešení.
Chcete-li konfigurovat VSIX balíček
V Aplikaci Solution Explorer, poklepejte na projektu WebPartNode source.extension.vsixmanifest souboru.
Visual Studio otevře soubor v editoru manifestu. Soubor source.extension.vsixmanifest je základem pro soubor extension.vsixmanifest, který je vyžadován pro všechny balíčky VSIX. Další informace o tomto souboru získáte v tématu VSX Schema for Extensions.
V poli Název produktu zadejte Uzel Galerie webových částí pro Průzkumníka serveru.
V poli Autor napište Contoso.
V Popis zadejte přidá vlastní galerii webových částí uzlu k uzlu připojení SharePoint Server Explorer. Toto rozšíření používá vlastní příkaz SharePoint volání do modelu objektu serveru.
V oddílu Obsah editoru klikněte na tlačítko Přidání obsahu.
V dialogovém okně Přidání obsahu v seznamu Volba typu obsahu zvolte Komponenta MEF.
Poznámka
Tato hodnota odpovídá prvku MefComponent v souboru extension.vsixmanifest file. Tento prvek určuje název sestavení rozšíření v balíčku VSIX. Další informace naleznete v tématu MEFComponent Element (VSX Schema).
Pod Vybrat zdroj, klepněte projektu rádiové tlačítko a vyberte WebPartNodeExtension v seznamu vedle něj.
Klikněte na tlačítko OK.
V editoru manifestu znovu klikněte na tlačítko Přidání obsahu.
V dialogovém okně Přidání obsahu v seznamu Zvolit typ obsahu zvolte Vlastní typ rozšíření.
Poznámka
Tato hodnota odpovídá CustomExtension prvku extension.vsixmanifest. Tento prvek určuje vlastní rozšíření, které chcete zahrnout v rozšíření Visual Studio. Další informace naleznete v tématu CustomExtension Element (VSX Schema).
V textovém poli Typ napište SharePoint.Commands.v4.
Poznámka
Tato hodnota odpovídá Type atributu CustomExtension prvku extension.vsixmanifest. Hodnota Sharepoint.Commands.v4 je vyžadována pro všechny vlastní rozšíření sestavení obsahující vlastní příkazy služby SharePoint.
Pod Vybrat zdroj, klepněte projektu rádiové tlačítko a vyberte WebPartCommands v seznamu vedle něj.
Klikněte na tlačítko OK.
V nabídce Build (Sestavit) klepněte na příkaz Build Solution (Sestavit řešení). Přesvědčte se, zda je řešení zkompilován bez chyb.
Otevřete složku výstupu sestavení pro projekt WebPartNode. Ujistěte se, zda tato složka nyní obsahuje soubor WebPartNode.vsix.
Ve výchozím nastavení je výstupní složka sestavení \bin\Debug složka pod složkou, která obsahuje soubor projektu.
Testování rozšíření
Nyní jste připraveni otestovat nový uzel Galerie webových částí v Průzkumníku serveru. Nejprve spustíte ladění rozšíření experimentální instance aplikace Visual Studio. Potom pomocí nového Webové části experimentální instance uzlu Visual Studio.
Chcete-li začít ladit rozšíření
Restartujte Visual Studio s oprávněními správce a otevřít WebPartNode roztoku.
WebPartNodeExtension projektu, otevřete soubor SiteNodeExtension kód a zarážky na první řádek kódu v NodeChildrenRequested a CreateWebPartNodes metod.
Stiskněte F5 pro spuštění ladění.
Visual Studio nainstaluje rozšíření do %UserProfile%\AppData\Local\Microsoft\VisualStudio\10.0Exp\Extensions\Contoso\Web Part Gallery Node Extension for Server Explorer\1.0 a spustí experimentální instanci Visual Studio. Položku projektu budete testovat v této instanci aplikace Visual Studio.
Chcete-li testovat rozšíření
Experimentální instance Visual Studio, zobrazení nabídky, klepněte na tlačítko Server Explorer.
Ověřte, zda web služby SharePoint, který chcete použít pro testování se zobrazí pod uzlem Připojení služby SharePoint v Průzkumníku serveru. Pokud není uveden, postupujte takto:
Klepněte pravým tlačítkem na SharePoint připojení a klepněte na tlačítko Přidat připojení.
V dialogovém okně Přidat připojení služby SharePoint zadejte adresu URL, ke které chcete připojit službu SharePoint. Chcete-li určit web služby SharePoint na vývojovém počítači, zadejte https://localhost.
Klepněte na tlačítko OK.
Rozbalte uzel připojení webu (uzel, který zobrazuje adresu URL webu) a potom rozbalte podřízený uzel serveru (například Týmový web).
Ověřte, zda kód v jiné instanci Visual Studio v dříve nastavené zarážky zarážek NodeChildrenRequested metody. Stisknutím F5 pokračujte v ladění projektu.
V experimentální instanci Visual Studio ověřte, že se nový uzel s názvem Galerie webových částí zobrazí v uzlu části webu nejvyšší úrovně. Rozbalte uzel Galerie webových částí.
Ověřte, že se kód ve druhé instanci aplikace Visual Studio zastaví na zarážce, kterou jste nastavili výše v metodě CreateWebPartNodes. Stisknutím F5 pokračujte v ladění projektu.
V instance experimentální sady Visual Studio ověřte, zda se zobrazí všechny webové části na připojeném webu pod uzlem Galerie webových částí v Průzkumníku serveru.
Jedna z webových částí klepněte pravým tlačítkem myši a klepněte na tlačítko Vlastnosti.
V Visual Studio instance ladíte, zkontrolujte podrobnosti o webové části se zobrazí v Vlastnosti okna.
Odinstalace rozšíření z aplikace Visual Studio
Po dokončení testování rozšíření odinstalujte rozšíření z aplikace Visual Studio.
Chcete-li odinstalovat rozšíření
Experimentální instance Visual Studio, Nástroje nabídky, klepněte na tlačítko Extension Manager.
Otevře se okno Správce rozšíření.
Vyberte v seznamu rozšíření Rozšíření webových částí Galerie uzel pro Server Explorera klepněte na tlačítko Odinstalace.
V dialogovém okně, které se objeví, klikněte na tlačítko Ano pro potvrzení, že chcete odinstalovat rozšíření.
Klikněte na Restartovat nyní pro dokonční odinstalace.
Zavřete obě instance programu Visual Studio (experimentální instanci aplikace Visual Studio a instanci obsahující otevřené řešení WebPartNode).
Viz také
Úkoly
Creating a New Bitmap or Other Image
Odkaz
Další zdroje
Rozšíření uzlu připojení služby SharePoint v aplikaci Server Explorer