Udostępnij za pośrednictwem


Instruktaż: Rozszerzanie Server Explorer do wyświetlania składników Web Part

W programie Visual Studio, można użyć Połączeń SharePoint węzeł Server Explorer do wyświetlania elementów w witrynach programu SharePoint.Jednakże Server Explorer nie są wyświetlane niektóre składniki domyślne.W tym instruktażu, będziesz rozszerzyć Server Explorer tak, aby wyświetlała galerii składników Web Part na każdy podłączony witryny programu SharePoint.

W tym instruktażu przedstawiono następujące zadania:

  • Tworzenie rozszerzeń programu Visual Studio, które rozciąga się Server Explorer w następujący sposób:

    • Dodaje rozszerzenie Galerii składników Web Part w węźle każdego programu SharePoint witryny w Server Explorer.Ten nowy węzeł zawiera węzły podrzędne reprezentujące każdy składnik Web Part w galerii składników Web Part na stronie.

    • Rozszerzenie definiuje nowy typ węzła, który reprezentuje wystąpienie składnika Web Part.Ten nowy typ węzła jest podstawą dla węzłów podrzędnych w ramach nowego Galerii składników Web Part węzła.Nowy typ węzła składnika Web Part wyświetla informacje w Właściwości okno o składniku Web Part, który reprezentuje.Typ węzła obejmuje również element menu skrótów niestandardowych, który służy jako punkt wyjścia do wykonywania innych zadań, które odnoszą się do składnika Web Part.

  • Tworzenie dwa niestandardowe polecenia programu SharePoint, która wzywa zgromadzenie rozszerzenie.Polecenia programu SharePoint są metody, które mogą być wywoływane przez zespoły rozszerzenie użycia interfejsów API w modelu serwer programu SharePoint.W tym instruktażu utworzyć poleceń, które pobierają informacje składnika Web Part z lokalnej witryny programu SharePoint na komputerze deweloperskim.Aby uzyskać więcej informacji, zobacz Wywołanie do modeli obiektów programu SharePoint.

  • Budowanie pakietu Visual Studio rozszerzenie (VSIX) do wdrażania rozszerzenia.

  • Debugowanie i testowania rozszerzenia.

[!UWAGA]

Dla alternatywnej wersji tego instruktażu, który używa modelu obiektów klienta programu SharePoint, zamiast jego serwera modelu, zobacz Instruktaż: Wywołanie do modelu obiektu klienta programu SharePoint w rozszerzeniu Eksploratora serwera.

Wymagania wstępne

Potrzebne są następujące składniki na komputerze deweloperskim do przeprowadzenia tego instruktażu:

Znajomość następujące pojęcia jest przydatne, ale nie jest to wymagane, aby ukończyć Instruktaż:

Tworzenie projektów

Do przeprowadzenia tego instruktażu, należy utworzyć trzy projekty:

  • Projekt VSIX, aby utworzyć pakiet VSIX wdrożyć rozszerzenia.

  • Projektu biblioteki klas, który implementuje rozszerzenie.Ten projekt musi być ukierunkowana na 4.5.NET Framework.

  • Projektu biblioteki klas, który określa niestandardowe polecenia programu SharePoint.Ten projekt musi być ukierunkowana na platformy.NET Framework 3.5.

Instruktaż należy rozpocząć od utworzenia projektów.

Aby utworzyć projekt VSIX

  1. Start Visual Studio.

  2. Na pasku menu wybierz pliku, Nowa, Projekt.

  3. W Nowy projekt okno dialogowe rozwiń Visual C# lub języka Visual Basic węzłów, a następnie wybierz polecenie rozszerzalności węzła.

    [!UWAGA]

    Rozszerzalności węzeł jest dostępne tylko po zainstalowaniu programu Visual Studio SDK.Aby uzyskać więcej informacji zobacz sekcję Warunki wstępne, wcześniej w tym temacie.

  4. W górnej części okna dialogowego wybierz opcję 4.5.NET Framework na liście wersje.NET Framework.

  5. Wybierz Projektu VSIX szablonu, nazwę projektu WebPartNode, a następnie wybierz polecenie OK przycisk.

    Visual Studiododaje WebPartNode projekt Solution Explorer.

Aby utworzyć rozszerzenie projektu

  1. W Solution Explorer, otwórz menu skrótów dla węzła rozwiązanie, wybierz Dodaj, a następnie wybierz polecenie Nowy projekt.

    [!UWAGA]

    W projektach programu Visual Basic, węzeł rozwiązanie pojawia się w Solution Explorer tylko wtedy, gdy Zawsze pokazuj rozwiązanie pole wyboru jest zaznaczone w General, Projects and Solutions, Options Dialog Box.

  2. W Nowy projekt okno dialogowe rozwiń Visual C# węzła lub programu Visual Basic węzła, a następnie wybierz Windows węzła.

  3. W górnej części okna dialogowego wybierz opcję 4.5.NET Framework na liście wersje.NET Framework.

  4. Na liście szablonów projektu, wybierz opcję Biblioteka klas, nazwa projektu WebPartNodeExtension, a następnie wybierz polecenie OK przycisk.

    Visual Studiododaje WebPartNodeExtension projektu do rozwiązania i otwiera plik domyślny kod Class1.

  5. Usuń plik Class1 kodu z projektu.

Tworzenie projektu poleceń programu SharePoint

  1. W Solution Explorer, otwórz menu skrótów dla węzła rozwiązanie, wybierz Dodaj, a następnie wybierz polecenie Nowy projekt.

    [!UWAGA]

    W projektach programu Visual Basic, węzeł rozwiązanie pojawia się w Solution Explorer tylko wtedy, gdy Zawsze pokazuj rozwiązanie pole wyboru jest zaznaczone w General, Projects and Solutions, Options Dialog Box.

  2. W Nowy projekt okno dialogowe rozwiń Visual C# węzła lub języka Visual Basic węzła, a następnie wybierz polecenie Windows węzła.

  3. W górnej części okna dialogowego wybierz opcję 3.5.NET Framework na liście wersje.NET Framework.

  4. Na liście szablonów projektu, wybierz opcję Biblioteka klas, nazwa projektu WebPartCommands, a następnie wybierz polecenie OK przycisk.

    Visual Studiododaje WebPartCommands projektu do rozwiązania i otwiera plik domyślny kod Class1.

  5. Usuń plik Class1 kodu z projektu.

Konfigurowanie projektów

Przed pisać kod, aby utworzyć rozszerzenie, należy dodać kod plików i odwołania do zestawów i skonfigurować ustawienia projektu.

Aby skonfigurować projektu WebPartNodeExtension

  1. W projekcie WebPartNodeExtension dodać cztery pliki kodu, które mają następujące nazwy:

    • SiteNodeExtension

    • WebPartNodeTypeProvider

    • WebPartNodeInfo

    • WebPartCommandIds

  2. Otwórz menu skrótów dla WebPartNodeExtension projektu, a następnie wybierz Dodaj odwołanie.

  3. W Reference Manager-WebPartNodeExtension okno dialogowe Wybierz Framework kartę, a następnie zaznacz pole wyboru dla każdego z następujących zestawów:

    • System.ComponentModel.Composition

    • System.Windows.Forms

  4. Wybierz rozszerzenia tab, zaznacz pole wyboru dla zestawu Microsoft.VisualStudio.SharePoint, a następnie wybierz OK przycisk.

  5. W Solution Explorer, otwórz menu skrótów dla WebPartNodeExtension projektu węzła, a następnie wybierz Właściwości.

    Project Designer otwiera.

  6. Wybierz aplikacji kartę.

  7. W domyślny obszar nazw pole (C#) lub nazw Root pole (Visual Basic), wprowadź ServerExplorer.SharePointConnections.WebPartNode.

Aby skonfigurować projektu WebPartCommands

  1. W projekcie WebPartCommands należy dodać plik kodu o nazwie WebPartCommands.

  2. W Solution Explorer, otwórz menu skrótów dla WebPartCommands projektu węzeł, wybierz Dodaj, a następnie wybierz polecenie Istniejący element.

  3. W Dodaj istniejący element okno dialogowe, przejdź do folderu zawierającego pliki kodu do projektu WebPartNodeExtension, a następnie wybierz kod pliki WebPartNodeInfo i WebPartCommandIds.

  4. Wybierz strzałkę znajdującą się obok Dodaj przycisk, a następnie wybierz Łącze Dodaj jako w wyświetlonym menu.

    Visual Studiododaje pliki kodu do projektu WebPartCommands jako łącza.W rezultacie pliki kodu znajdują się w programie project WebPartNodeExtension, ale kod w plikach również są kompilowane w projekcie WebPartCommands.

  5. Otwórz menu skrótów dla WebPartCommands projekt ponownie i wybrać Dodaj odwołanie.

  6. W Reference Manager-WebPartCommands okno dialogowe Wybierz rozszerzenia tab, zaznacz pole wyboru dla każdego z następujących zestawów, a następnie wybierz OK przycisku:

    • Microsoft.SharePoint

    • Microsoft.VisualStudio.SharePoint.Commands

  7. W Solution Explorer, otwórz menu skrótów dla WebPartCommands projekt ponownie, a następnie wybierz Właściwości.

    Project Designer otwiera.

  8. Wybierz aplikacji kartę.

  9. W domyślny obszar nazw pole (C#) lub nazw Root pole (Visual Basic), wprowadź ServerExplorer.SharePointConnections.WebPartNode.

Tworzenie ikony dla nowych węzłów

Utwórz dwie ikony dla Server Explorer rozszerzenia: ikona nowego Galerii składników Web Part węzła i innej ikony dla każdego węzła składnika Web Part dziecko pod Galerii składników Web Part węzła.Później w tym instruktażu pisać kod, który kojarzy te ikony z węzłów.

Do utworzenia ikony dla węzłów

  1. W Solution Explorer, otwórz menu skrótów dla WebPartNodeExtension projektu, a następnie wybierz Właściwości.

  2. Project Designer otwiera.

  3. Wybierz zasobów kartę, a następnie wybierz Ten projekt nie zawiera domyślnie plik zasobów. Kliknij tutaj, aby utworzyć jeden link.

    Visual StudioTworzy plik zasobów i otworzy ją w projektancie.

  4. W górnej części projektanta, wybierz strzałkę znajdującą się obok Dodać zasób menu polecenia, a następnie wybierz polecenie Dodać nową ikonę w wyświetlonym menu.

  5. W Dodać nowy zasób okno dialogowe Nazwa nowa ikona WebPartsNode, a następnie wybierz polecenie Dodaj przycisk.

    Nowa ikona zostanie otwarty w Edytor obrazu.

  6. Edytowanie wersji 16 x 16 ikony tak, że projekt, który można łatwo rozpoznać.

  7. Otwórz menu skrótów dla wersji 32 x 32, ikony, a następnie wybierz Usunąć typ obrazu.

  8. Powtórz kroki od 5 do 8, aby dodać ikonę drugi do projektu zasobów i nazwać tę ikonę, składnika Web Part.

  9. W Solution Explorerpod zasobów folder dla WebPartNodeExtension projekt, otwórz menu skrótów dla WebPartsNode.ico.

  10. W Właściwości okno, wybierz strzałkę znajdującą się obok Tworzenie akcji, a następnie wybierz polecenie Zasobów osadzonych w wyświetlonym menu.

  11. Powtórz dwa ostatnie kroki dla WebPart.ico.

Dodawanie węzła galerii składników Web Part do Server Explorer

Tworzenie klasy, która dodaje nowe Galerii składników Web Part węzeł, aby każdy węzeł witryny programu SharePoint.Aby dodać nowy węzeł, implementuje klasy IExplorerNodeTypeExtension interfejsu.Implementuje ten interfejs, w każdym przypadku, gdy chcesz rozszerzyć zachowanie istniejącego węzła, w Server Explorer, takie jak dodawanie węzła podrzędnego do węzła.

Aby dodać węzeł do galerii składników Web Part do Server Explorer

  • Projektu, WebPartNodeExtension Otwórz plik SiteNodeExtension kod, a następnie wklej następujący kod do niego.

    [!UWAGA]

    Po dodać ten kod, projekt będzie mieć pewne błędy kompilacji, ale będziesz odejść podczas dodawania kodu w dalszych krokach.

    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);
                    }
                }
            }
        }
    }
    

Definiowanie typu węzła, który reprezentuje składnik Web Part

Tworzenie klasy, która definiuje nowy typ węzła, który reprezentuje składnik Web Part.Visual Studio wykorzystuje ten nowy typ węzła wyświetlić węzły podrzędne pod Galerii składników Web Part węzła.Każdy węzeł podrzędny reprezentuje pojedynczy składnik Web Part w witrynie programu SharePoint.

Aby zdefiniować nowy typ węzła implementuje klasy IExplorerNodeTypeProvider interfejsu.Implementuje ten interfejs, w każdym przypadku, gdy chcesz zdefiniować nowy typ węzła w Server Explorer.

Aby zdefiniować typ węzła składnika Web Part

  • Projektu, WebPartNodeExtension Otwórz plik WebPartNodeTypeProvder kod, a następnie wklej następujący kod do niego.

    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);
            }
        }
    }
    

Definiowanie klasy danych część sieci Web

Definiowanie klasy, która zawiera dane dotyczące jednego składnika Web Part w witrynie programu SharePoint.Później w tym instruktażu będą tworzyć niestandardowe polecenia programu SharePoint, która pobiera dane dotyczące każdego składnika Web Part na stronie, a następnie przypisuje danych do wystąpienia tej klasy.

Aby określić dane klasy składnika Web Part

  • Projektu, WebPartNodeExtension Otwórz plik WebPartNodeInfo kod, a następnie wklej następujący kod do niego.

    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; }
        }
    }
    

Zdefiniowanie IDs dla polecenia programu SharePoint

Należy zdefiniować kilka ciągów, które identyfikują niestandardowe polecenia programu SharePoint.Te polecenia zostaną zaimplementowane w dalszej części tego instruktażu.

Aby zdefiniować identyfikatory poleceń

  • Projektu, WebPartNodeExtension Otwórz plik WebPartCommandIds kod, a następnie wklej następujący kod do niego.

    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";
        }
    }
    

Tworzenie niestandardowych poleceń programu SharePoint

Utworzyć niestandardowe polecenia, które wywołują serwer modelu obiektów programu SharePoint pobierać dane dotyczące składników Web Part w witrynie programu SharePoint.Każde polecenie jest metoda, która ma SharePointCommandAttribute do niego zastosowany.

Aby zdefiniować poleceń programu SharePoint

  • Projektu, WebPartCommands Otwórz plik WebPartCommands kod, a następnie wklej następujący kod do niego.

    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);
            }
        }
    }
    

Punkt kontrolny

W tym momencie w instruktażu, cały kod dla Galerii składników Web Part węzła i poleceń programu SharePoint są teraz w projektach.Tworzenie rozwiązania, aby upewnić się, że oba projekty skompilować bez błędów.

Rozwiązanie

  • Na pasku menu wybierz budować, Budowania rozwiązania.

    Informacje dotyczące przestrogiPrzestroga

    W tym momencie projektu WebPartNode może być błąd kompilacji, ponieważ pliku manifestu VSIX nie ma wartości dla autora.Ten błąd zniknie po dodaniu wartości w dalszych krokach.

Tworzenie rozszerzenia wdrożyć pakiet VSIX

Aby wdrożyć rozszerzenie, należy użyć projektu VSIX w swoje rozwiązanie tworzenia pakiet VSIX.Najpierw należy skonfigurować pakiet VSIX modyfikując plik source.extension.vsixmanifest w projekcie VSIX.Następnie utwórz pakiet VSIX przez budowania rozwiązania.

Aby skonfigurować pakiet VSIX

  1. W Solution Explorer, zgodnie z projektem WebPartNode, otwórz source.extension.vsixmanifest plik w edytorze manifestu.

    Plik source.extension.vsixmanifest jest podstawą dla pliku extension.vsixmanifest, które wymagają wszystkie pakiety VSIX.Aby uzyskać więcej informacji na temat tego pliku, zobacz VSIX rozszerzenie schematu odwołania.

  2. W Nazwa produktu wprowadź Węzeł Galeria części sieci Web Server Explorer.

  3. W autora wprowadź Contoso.

  4. W Opis wprowadź dodaje niestandardowe węzeł galerii składników Web Part do węzła połączenia programu SharePoint w programie Explorer serwera. To rozszerzenie korzysta z niestandardowego polecenia programu SharePoint do modelu obiektu serwera.

  5. Wybierz aktywów karcie edytor, a następnie wybierz polecenie Nowy przycisk.

    Dodać nowego środka pojawi się okno dialogowe.

  6. W typu listy, wybierz opcję Microsoft.VisualStudio.MefComponent.

    [!UWAGA]

    Wartość ta odpowiada MefComponent elementu w pliku extension.vsixmanifest.Ten element Określa nazwę zestawu rozszerzeń w pakiecie VSIX.Aby uzyskać więcej informacji, zobacz MEFComponent Element.

  7. W źródło listy, wybierz opcję projektu w bieżącym rozwiązaniem.

  8. W Projekt listy, wybierz opcję WebPartNodeExtension , a następnie wybierz OK przycisk.

  9. W edytorze manifestu, wybierz opcję Nowa przycisk ponownie.

    Dodać nowego środka pojawi się okno dialogowe.

  10. W typu wprowadź SharePoint.Commands.v4.

    [!UWAGA]

    Ten element określa niestandardowe rozszerzenia, które chcesz dołączyć do rozszerzenia programu Visual Studio.Aby uzyskać więcej informacji, zobacz Element aktywów (schemat VSX).

  11. W źródło listy, wybierz opcję projektu w bieżącym rozwiązaniem elementu listy.

  12. W Projekt listy, wybierz opcję WebPartCommands, a następnie wybierz polecenie OK przycisk.

  13. Na pasku menu wybierz budować, Budowania rozwiązania, a następnie upewnij się, że rozwiązanie kompiluje się bez błędów.

  14. Upewnij się, że folder wyjściowy kompilacji dla projektu WebPartNode zawiera teraz plik WebPartNode.vsix.

    Domyślnie folder wyjściowy kompilacji jest...folder \bin\Debug w folderze, który zawiera plik projektu.

Testowanie rozszerzenia

Teraz możesz przetestować nowe Galerii składników Web Part węzeł w Server Explorer.Po pierwsze rozpocząć debugowanie rozszerzenie w doświadczalnych wystąpienie programu Visual Studio.Następnie, za pomocą nowej Składników Web Part węzła w doświadczalnych wystąpienie Visual Studio.

Aby rozpocząć debugowanie rozszerzenia

  1. Uruchom ponownie Visual Studio z poświadczeniami administracyjnymi, a następnie otwórz rozwiązanie WebPartNode.

  2. Projektu, WebPartNodeExtension, należy otworzyć plik SiteNodeExtension kod, a następnie Dodaj punkt przerwania w pierwszej linii kodu w NodeChildrenRequested i CreateWebPartNodes metody.

  3. Wybierz klawisz F5, aby rozpocząć debugowanie.

    Visual Studio instaluje rozszerzenie do %UserProfile%\AppData\Local\Microsoft\VisualStudio\11.0Exp\Extensions\Contoso\Web części galerii węzła Rozszerzenia dla serwera Explorer\1.0 i uruchamia wystąpienie doświadczalnych Visual Studio.Element projektu spowoduje przetestowanie w tym wystąpieniu programu Visual Studio.

Aby przetestować rozszerzenia

  1. W wystąpieniu doświadczalnych Visual Studio, na pasku menu wybierz Widok, Server Explorer.

  2. Wykonaj następujące czynności, jeśli nie jest wyświetlany w obszarze witryny programu SharePoint, które chcesz używać do testowania Połączeń SharePoint węzeł w Server Explorer:

    1. W Server Explorer, otwórz menu skrótów dla Połączeń SharePoint, a następnie wybierz polecenie Dodać połączenie.

    2. W Dodać połączenie programu SharePoint okno dialogowe Wprowadź adres URL witryny programu SharePoint, do którego chcesz się połączyć, a następnie wybierz OK przycisk.

      Aby określić witrynę programu SharePoint na komputerze dewelopera, wprowadź https://localhost.

  3. Rozwiń węzeł połączenia lokacji (która wyświetla adres URL witryny), a następnie rozwiń węzeł witryny podrzędne (na przykład, Witryny zespołu w).

  4. Sprawdź, czy kodu w innym wystąpieniu programu Visual Studio zatrzymuje się na punkt przerwania, które wcześniej w zestaw NodeChildrenRequested metoda, a następnie wybierz polecenie F5, aby kontynuować debugowania projektu.

  5. W eksperymentalnych wystąpienie programu Visual Studio, upewnij się, że nowy węzeł o nazwie Galerii składników Web Part pojawia się w węźle witryny najwyższego poziomu, a następnie rozwiń węzeł Galerii składników Web Part węzła.

  6. Sprawdź, że kod w inne wystąpienie programu Visual Studio zatrzymuje się na punkt przerwania, które wcześniej w zestaw CreateWebPartNodes metoda, a następnie wybierz klawisz F5, aby kontynuować debugowania projektu.

  7. W eksperymentalnych wystąpienie programu Visual Studio, upewnij się, że wszystkie składniki Web Part na stronie połączone są wyświetlane w obszarze Galerii składników Web Part węzeł w Server Explorer.

  8. W Server Explorer, aby otworzyć menu skrótów z jednej części sieci Web, a następnie wybierz Właściwości.

  9. Wystąpienie tego Visual Studio , debugowania, sprawdź, że szczegółowe informacje o składniku Web Part są wyświetlane w Właściwości okna.

Odinstalowywanie rozszerzenia z programu Visual Studio

Po zakończeniu testowania rozszerzenia, należy odinstalować rozszerzenie z programu Visual Studio.

Aby odinstalować rozszerzenie

  1. W wystąpieniu doświadczalnych Visual Studio, na pasku menu wybierz Narzędzia, rozszerzenia i aktualizacje.

    Rozszerzenia i aktualizacje zostanie otwarte okno dialogowe.

  2. Na liście Rozszerzenia wybierz Rozszerzenie węzła galerii Web Part Server Explorer, a następnie wybierz polecenie odinstalować przycisk.

  3. W wyświetlonym oknie dialogowym wybierz Tak przycisk, aby potwierdzić, że chcesz odinstalować rozszerzenie, a następnie wybierz Uruchom ponownie teraz przycisk, aby zakończyć dezinstalację.

  4. Zamknij oba wystąpienia programu Visual Studio (wystąpienie eksperymentalnych i wystąpienie programu Visual Studio, w którym roztwór WebPartNode jest otwarty).

Zobacz też

Zadania

Instruktaż: Wywołanie do modelu obiektu klienta programu SharePoint w rozszerzeniu Eksploratora serwera

Tworzenie ikony lub innego obrazu (Edytor obrazów dla ikon)

Informacje

Edytor obrazów dla ikon

Inne zasoby

Rozszerzanie węzła połączenia programu SharePoint w programie Server Explorer