Sdílet prostřednictvím


Návod: Rozšíření průzkumníka serveru pro zobrazení částí webu

V aplikaci Visual Studio můžete použít Připojení služby SharePoint uzlu Server Explorer zobrazit součásti na webech služby SharePoint.Však Server Explorer ve výchozím nastavení nezobrazuje některé součásti.V tomto návodu budete 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í aplikace Visual Studio, která rozšiřuje Server Explorer následujícími způsoby:

    • Přidá rozšíření Galerie webových částí za každý uzel serveru SharePoint v uzlu Server Explorer.Tento nový uzel obsahuje podřízené uzly, které představují jednotlivé webové část v Galerii webových částí na webu.

    • Rozšíření 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é části zobrazí informace v okně Vlastnosti o webové části, která jej představuje.Typ uzlu také položky vlastní místní nabídky, která lze použít jako počáteční bod pro provádění jiných úkolů, které se vztahují k webové části.

  • Vytvoření dvou vlastních příkazů služby SharePoint, která volání sestavení rozšíření.Příkazy služby SharePoint jsou metody, které mohou být volány sestavení rozšíření pro SharePoint použít rozhraní API v objektovém modelu serveru.V tomto návodu vytvoříte příkazy načíst informace o webové části z místního webu služby 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 tohoto návodu, který používá objektový model klienta namísto jeho objektového modelu serveru SharePoint, viz Návod: Volání do modelu klientského objektu služby SharePoint v rozšíření průzkumníka serveru.

Požadavky

Ve vývojovém počítači potřebujete následující součásti pro dokončení tohoto návodu:

Znalost následujících konceptů je užitečná, ale není požadována k dokončení návodu:

Vytváření projektů

Chcete-li dokončit tento návod, musíte vytvořit tři projekty:

  • Projekt VSIX k vytvoření balíčku VSIX k nasazení rozšíření.

  • Projekt knihovny tříd, který implementuje rozšíření.Tento projekt musí cílová 4.5 rozhraní .NET Framework.

  • Projekt knihovny tříd, který definuje 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

  1. Spusťte nástroj Visual Studio.

  2. Na panelu nabídek zvolte soubor, Nový, projektu.

  3. V Nový projekt dialogové okno pole, rozbalte položku Visual C# nebo jazyka Visual Basic uzly a pak zvolte rozšíření uzlu.

    [!POZNÁMKA]

    Rozšíření uzel je k dispozici pouze v případě, že nainstalujete Visual Studio SDK.Další informace naleznete v části požadavky dříve v tomto tématu.

  4. V horní části dialogového okna zvolte .NET Framework 4.5 v seznamu verze rozhraní.NET Framework.

  5. Zvolte Projektu VSIX šablony, název projektu WebPartNodea pak zvolte OK tlačítko.

    Visual Studio přidá WebPartNode projekt do Průzkumníku řešení.

Chcete-li vytvořit projekt rozšíření

  1. V Průzkumníku, otevřete místní nabídku pro uzel řešení, zvolte Přidata pak zvolte 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.

  2. V Nový projekt dialogovém okně rozbalte Visual C# uzel nebo Visual Basic uzel a zvolte Windows uzel.

  3. V horní části dialogového okna zvolte .NET Framework 4.5 v seznamu verze rozhraní.NET Framework.

  4. V seznamu šablon projektu zvolte Knihovny tříd, název projektu WebPartNodeExtensiona pak zvolte OK tlačítko.

    Visual Studio přidá projekt WebPartNodeExtension do řešení a otevře soubor výchozího kódu Class1.

  5. Odstraňte soubor kódu Class1 z projektu.

Vytvoření projektu příkazů služby SharePoint

  1. V Průzkumníku, otevřete místní nabídku pro uzel řešení, zvolte Přidata pak zvolte 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.

  2. V Nový projekt dialogové okno pole, rozbalte položku Visual C# uzel nebo jazyka Visual Basic uzel a pak zvolte Windows uzlu.

  3. V horní části dialogového okna zvolte 3.5 rozhraní.NET Framework v seznamu verze rozhraní.NET Framework.

  4. V seznamu šablon projektu zvolte Knihovny tříd, název projektu WebPartCommandsa pak zvolte OK tlačítko.

    Visual StudioPřidá WebPartCommands projekt do řešení a otevře soubor výchozího kódu Class1.

  5. Odstraňte soubor kódu Class1 z projektu.

Konfigurace projektů

Před napsáním kódu pro vytvoření rozšíření musíte přidat soubory kódu a odkazy na sestavení a konfiguraci nastavení projektu.

Konfigurace projektu WebPartNodeExtension

  1. V projektu WebPartNodeExtension přidejte čtyři soubory kódu, které mají následující názvy:

    • SiteNodeExtension

    • WebPartNodeTypeProvider

    • WebPartNodeInfo

    • WebPartCommandIds

  2. Otevření místní nabídky WebPartNodeExtension projektu a pak zvolte Přidat odkaz.

  3. V Reference Manager-WebPartNodeExtension dialogovém okně zvolte Framework kartu a potom zaškrtněte políčko pro každý následující sestavení:

    • System.ComponentModel.Composition

    • System.Windows.Forms

  4. Zvolte rozšíření karta, zaškrtněte políčko pro sestavení Microsoft.VisualStudio.SharePoint a pak zvolte OK tlačítko.

  5. V Průzkumníku, otevřete místní nabídku WebPartNodeExtension uzel projektu a pak zvolte Vlastnosti.

    Otevře se Projekt designer.

  6. Zvolte aplikace kartu.

  7. V výchozí obor názvů pole (C#) nebo kořenový obor názvů pole (Visual Basic), zadejte ServerExplorer.SharePointConnections.WebPartNode.

Konfigurace projektu WebPartCommands

  1. V projektu WebPartCommands přidání souboru kódu s názvem WebPartCommands.

  2. V Průzkumníku, otevřete místní nabídku WebPartCommands uzel projektu, zvolte Přidata pak zvolte Existující položku.

  3. V Přidat existující položku dialogové okno, vyhledejte složku obsahující soubory kódu pro projekt WebPartNodeExtension a pak zvolte kód soubory WebPartNodeInfo a WebPartCommandIds.

  4. Zvolte na šipku vedle Přidat tlačítko a poté zvolte Přidat jako odkaz v zobrazené nabídce.

    Visual Studiosoubory kódu přidá do projektu WebPartCommands jako odkazy.V důsledku toho jsou umístěny soubory kódu v projektu WebPartNodeExtension, ale také kompilovány kódu v souborech v projektu WebPartCommands.

  5. Otevření místní nabídky WebPartCommands projektu znovu a zvolte Přidat odkaz.

  6. V Reference Manager-WebPartCommands dialogovém okně zvolte rozšíření karta, zaškrtněte políčko pro každý následující sestavení a pak zvolte OK tlačítko:

    • Microsoft.SharePoint

    • Microsoft.VisualStudio.SharePoint.Commands

  7. V Průzkumníku, otevřete místní nabídku WebPartCommands projektu znovu a zvolte Vlastnosti.

    Otevře se Projekt designer.

  8. Zvolte aplikace kartu.

  9. V výchozí obor názvů pole (C#) nebo kořenový obor názvů pole (Visual Basic), zadejte ServerExplorer.SharePointConnections.WebPartNode.

Vytvoření ikony pro nové uzly

Vytvořte dvě ikony pro Server Explorer rozšíření: Ikona pro nové Galerie webových částí uzlu a jinou ikonu pro každý podřízený uzel webové části v rámci Galerie webových částí uzlu.Dále v tomto návodu zapíšete kód, který přidruží tyto ikony uzlům.

Chcete-li vytvořit ikony pro uzly

  1. V Průzkumníku, otevřete místní nabídku WebPartNodeExtension projektu a pak zvolte Vlastnosti.

  2. Otevře se Projekt designer.

  3. Zvolte zdroje kartu a pak zvolte Tento projekt neobsahuje výchozí soubor prostředků. Kliknutím sem vytvoříte jednu odkaz.

    Visual StudioVytvoří soubor prostředků a otevře v návrháři.

  4. V horní části návrháře, zvolte na šipku vedle Přidat prostředek nabídce příkaz a pak zvolte Přidat novou ikonu v zobrazené nabídce.

  5. V Přidat nový zdroj dialogovém název nová ikona WebPartsNodea pak zvolte Přidat tlačítko.

    Nová ikona se otevře v Editoru obrázků.

  6. Upravte verzi 16 x 16 ikony tak, aby návrh, který lze snadno rozpoznat.

  7. Otevřete místní nabídku pro ikonu verze 32 x 32 a pak zvolte Odstranit typ obrázku.

  8. Opakujte kroky 5 až 8 přidejte druhou ikonu zdroje projektu a pojmenujte tuto ikonu webové části.

  9. V Průzkumníkupod zdroje složku WebPartNodeExtension projektu, otevřete místní nabídku pro WebPartsNode.ico.

  10. V Vlastnosti okna, zvolte na šipku vedle Akce sestavenía pak zvolte Integrovaný prostředek v zobrazené nabídce.

  11. 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 Server Explorer, jako je přidání podřízeného uzlu k uzlu.

Chcete-li přidat uzel Galerie webových částí do Průzkumníku serveru

  • V projektu WebPartNodeExtension otevřete soubor kódu SiteNodeExtension a poté do něj vložte následující kód.

    [!POZNÁMKA]

    Po přidání tohoto kódu, bude mít projekt několik chyb kompilace, ale budete okamžitě přejít po přidání 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.Visual Studio používá k zobrazení podřízených uzlů pod tento nový typ uzlu Galerie webových částí uzlu.Každý podřízený uzel 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 otevřete soubor kódu WebPartNodeTypeProvder a poté do něj 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);
            }
        }
    }
    

Definování třídy dat webové části

Definujte třídu, která obsahuje data o jedné webové části na webu služby 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.

Definujte třídu dat webové části

  • V projektu WebPartNodeExtension otevřete soubor kódu WebPartNodeInfo a poté do něj 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ích příkazů služby SharePoint.Dále v tomto návodu budete implementovat tyto příkazy.

Definovat ID příkazů

  • V projektu WebPartNodeExtension otevřete soubor kódu WebPartCommandIds a poté do něj 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";
        }
    }
    

Vytvoření vlastních příkazů služby SharePoint

Vytvoření vlastních příkazů, které volají do objektového modelu serveru pro SharePoint získat data o webových částí na webu služby SharePoint.Každý příkaz je metoda, která má SharePointCommandAttribute použita.

Chcete-li definovat příkazy služby SharePoint

  • V WebPartCommands projektu otevřete soubor kódu WebPartCommands a poté do něj 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

V tomto bodě návodu kód pro Galerie webových částí uzel a příkazy služby SharePoint jsou nyní v projektech.Sestavte řešení, abyste se ujistili, že oba projekty zkompiluje bez chyb.

Sestavte řešení

  • Na panelu nabídek zvolte sestavení, Sestavit řešení.

    Poznámka k upozorněníUpozornění

    V tomto okamžiku projektu WebPartNode mohou mít chybu sestavení, protože autor nemá hodnotu manifestu souboru VSIX.Tato chyba předejdete přidat hodnotu v dalších krocích.

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 v projektu VSIX.Potom vytvořte VSIX balíček vytvořením řešení.

Chcete-li konfigurovat VSIX balíček

  1. V Průzkumníku, pod projektem WebPartNode otevřít source.extension.vsixmanifest souboru v editoru manifestu.

    Soubor source.extension.vsixmanifest je základem pro soubor extension.vsixmanifest, který vyžadují všechny balíčky VSIX.Další informace o tomto souboru získáte v tématu VSIX rozšíření schématu Reference.

  2. V Název produktu zadejte Uzel galerie webových částí pro Průzkumník Server.

  3. V Autor zadejte Contoso.

  4. V Popis zadejte přidá vlastní uzel galerie webových částí k uzlu připojení služby SharePoint v Průzkumníku serveru. Toto rozšíření používá vlastní příkaz SharePoint pro volání do objektového modelu serveru.

  5. Zvolte majetku kartě editor a pak zvolte Nový tlačítko.

    Přidat nový majetek zobrazí se dialogové okno.

  6. V typu seznam, zvolte Microsoft.VisualStudio.MefComponent.

    [!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.

  7. V zdroje seznam, zvolte projektu v aktuálním řešení.

  8. V projektu seznam, zvolte WebPartNodeExtension a pak zvolte OK tlačítko.

  9. Zvolte v editoru manifestu Nový znovu na tlačítko.

    Přidat nový majetek zobrazí se dialogové okno.

  10. V typu zadejte SharePoint.Commands.v4.

    [!POZNÁMKA]

    Tento prvek určuje vlastní rozšíření, které chcete zahrnout do rozšíření aplikace Visual Studio.Další informace naleznete v tématu Prvek majetku (VSX schéma).

  11. V zdroje seznam, zvolte projektu v aktuálním řešení položky seznamu.

  12. V projektu seznam, zvolte WebPartCommandsa pak zvolte OK tlačítko.

  13. Na panelu nabídek zvolte sestavení, Sestavit řešenía ujistěte se, že řešení zkompiluje bez chyb.

  14. Zkontrolujte složku výstupu sestavení pro projekt WebPartNode 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ý Galerie webových částí uzlu v Server Explorer.Nejprve spusťte ladění rozšíření v experimentální instanci aplikace Visual Studio.Potom použijte nový Webové části uzel v experimentální instanci Visual Studio.

Chcete-li začít ladit rozšíření

  1. Restartujte Visual Studio s pověřeními pro správu a otevřete řešení WebPartNode.

  2. V projektu WebPartNodeExtension otevřete soubor kódu SiteNodeExtension a potom přidejte zarážku do prvního řádku kódu v NodeChildrenRequested a CreateWebPartNodes metod.

  3. Zvolte klávesu F5 pro spuštění ladění.

    Visual Studio nainstaluje rozšíření do %UserProfile%\AppData\Local\Microsoft\VisualStudio\11.0Exp\Extensions\Contoso\Web uzel rozšíření Galerie částí pro Server Explorer\1. 0 a spustí experimentální instanci aplikace Visual Studio.Položku projektu budete testovat v této instanci aplikace Visual Studio.

Chcete-li testovat rozšíření

  1. V experimentální instanci Visual Studio, v řádku nabídek zvolte zobrazení, Server Explorer.

  2. Pokud web služby SharePoint, který chcete použít pro testování nezobrazí v seznamu, proveďte následující kroky Připojení služby SharePoint uzlu v Server Explorer:

    1. V Server Explorer, otevřete místní nabídku pro Připojení služby SharePointa pak zvolte Přidat připojení.

    2. V Přidat připojení služby SharePoint dialogovém okně zadejte adresu URL webu služby SharePoint, které chcete připojit a pak zvolte OK tlačítko.

      Web služby SharePoint na vývojovém počítači, zadejte https://localhost.

  3. Rozbalte uzel připojení webu (který zobrazuje adresu URL webu) a potom rozbalte podřízený uzel serveru (například Týmový web).

  4. Ověřte, že kód ve druhé instanci Visual Studio zastaví na zarážce, kterou jste nastavili výše v NodeChildrenRequested metodou a pak zvolte F5 lze pokračovat v ladění projektu.

  5. V experimentální instanci Visual Studio ověřte, že nový uzel s názvem Galerie webových částí se zobrazí pod uzel nejvyšší úrovně webu a potom rozbalte Galerie webových částí uzlu.

  6. Ověřte, že se kód ve druhé instanci aplikace Visual Studio zastaví na zarážce, kterou jste nastavili výše v CreateWebPartNodes metodou a pak zvolte klávesu F5 k pokračování v ladění projektu.

  7. V experimentální instanci Visual Studio ověřte, zda se zobrazí všechny webové části na připojeném webu pod Galerie webových částí uzlu v Server Explorer.

  8. V Server Explorer, otevřete místní nabídku pro jednu z webových částí a pak zvolte Vlastnosti.

  9. V instanci Visual Studio , ladění, ověřte, že podrobnosti o webové části 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í

  1. V experimentální instanci Visual Studio, v řádku nabídek zvolte Nástroje, aktualizace a rozšíření.

    Aktualizace a rozšíření dialogové okno.

  2. V seznamu rozšíření zvolte Uzel rozšíření Galerie webových částí pro Průzkumník Servera pak zvolte Odinstalace tlačítko.

  3. V dialogovém okně, které se objeví, zvolte Ano potvrďte, že chcete odinstalovat rozšíření a pak zvolte tlačítko Restartovat nyní tlačítko dokončete odinstalaci.

  4. Zavřete obě instance programu Visual Studio (experimentální instanci a instanci aplikace Visual Studio, ve kterém je otevřené řešení WebPartNode).

Viz také

Úkoly

Návod: Volání do modelu klientského objektu služby SharePoint v rozšíření průzkumníka serveru

Vytvoření ikony nebo jiného obrázku (editor obrázků pro ikony)

Referenční dokumentace

Editor obrázků pro ikony

Další zdroje

Rozšíření uzlu připojení služby SharePoint v průzkumníku serveru