Freigeben über


Gewusst wie: Abrufen des SharePoint-Projektdiensts

Sie können auf den SharePoint-Projektdienst in den folgenden Projektmappentypen zugreifen:

  • Eine Erweiterung des SharePoint-Projektsystems, z. B. eine Projekterweiterung, Projektelementerweiterung oder Projektelementtypdefinition.Weitere Informationen zu diesen Erweiterungstypen finden Sie unter Erweitern des SharePoint-Projektsystems.

  • Eine Erweiterung des Knotens SharePoint-Verbindungen in Server-Explorer.Weitere Informationen zu diesen Erweiterungstypen finden Sie unter Erweitern des SharePoint-Verbindungsknotens im Server-Explorer.

  • Ein anderer Erweiterungstyp für Visual Studio, z. B. ein Add-In oder ein VSPackage.

Abrufen des Diensts in Projektsystemerweiterungen

In jeder Erweiterung des SharePoint-Projektsystems können Sie mit der ProjectService-Eigenschaft eines ISharePointProject-Objekts auf den Projektdienst zugreifen.

Sie können den Projektdienst auch mit den folgenden Prozeduren abrufen.

So rufen Sie den Dienst in einer Projekterweiterung ab

  1. Suchen Sie in Ihrer Implementierung der ISharePointProjectExtension-Schnittstelle die Initialize-Methode.

  2. Verwenden Sie den projectService-Parameter, um auf den Dienst zuzugreifen.

    Im folgenden Codebeispiel wird veranschaulicht, wie der Projektdienst verwendet wird, um in einer einfachen Projekterweiterung eine Meldung in das Fenster Ausgabe und das Fenster Fehlerliste zu schreiben.

    <Export(GetType(ISharePointProjectExtension))> _
    Friend Class GetServiceInProject
        Implements ISharePointProjectExtension
    
        Private Sub Initialize(ByVal projectService As ISharePointProjectService) _
            Implements ISharePointProjectExtension.Initialize
            projectService.Logger.WriteLine("This message was written by using the " & _
                "project service in a project extension.", LogCategory.Message)
        End Sub
    End Class
    
    [Export(typeof(ISharePointProjectExtension))]
    internal class GetServiceInProject : ISharePointProjectExtension
    {
        public void Initialize(ISharePointProjectService projectService)
        {
            projectService.Logger.WriteLine("This message was written by using the " +
                "project service in a project extension.", LogCategory.Message);
        }
    }
    

    Weitere Informationen zum Erstellen von Projekterweiterungen finden Sie unter Gewusst wie: Erstellen einer SharePoint-Projekterweiterung.

So rufen Sie den Dienst in einer Projektelementerweiterung ab

  1. Suchen Sie in Ihrer Implementierung der ISharePointProjectItemTypeExtension-Schnittstelle die Initialize-Methode.

  2. Verwenden Sie die ProjectService-Eigenschaft des projectItemType-Parameters, um den Dienst abzurufen.

    Im folgenden Codebeispiel wird veranschaulicht, wie der Projektdienst verwendet wird, um in einer einfachen Erweiterung des Projektelements Listendefinition eine Meldung in das Fenster Ausgabe und das Fenster Fehlerliste zu schreiben.

    <Export(GetType(ISharePointProjectItemTypeExtension))> _
    <SharePointProjectItemType("Microsoft.VisualStudio.SharePoint.ListDefinition")> _
    Friend Class GetServiceInProjectItem
        Implements ISharePointProjectItemTypeExtension
    
        Private Sub Initialize(ByVal projectItemType As ISharePointProjectItemType) _
            Implements ISharePointProjectItemTypeExtension.Initialize
            projectItemType.ProjectService.Logger.WriteLine("This message was written " & _
                "by using the project service in an extension for the ListDefinition project item.", _
                LogCategory.Message)
        End Sub
    End Class
    
    [Export(typeof(ISharePointProjectItemTypeExtension))]
    [SharePointProjectItemType("Microsoft.VisualStudio.SharePoint.ListDefinition")]
    internal class GetServiceInProjectItem : ISharePointProjectItemTypeExtension
    {
        public void Initialize(ISharePointProjectItemType projectItemType)
        {
            projectItemType.ProjectService.Logger.WriteLine("This message was written " +
                "by using the project service in an extension for the ListDefinition project item.", 
                LogCategory.Message);
        }
    }
    

    Weitere Informationen zum Erstellen von Projektelementerweiterungen finden Sie unter Gewusst wie: Erstellen einer SharePoint-Projektelementerweiterung.

So rufen Sie den Dienst in einer Projektelementtypdefinition ab

  1. Suchen Sie in Ihrer Implementierung der ISharePointProjectItemTypeProvider-Schnittstelle die InitializeType-Methode.

  2. Verwenden Sie die ProjectService-Eigenschaft des typeDefinition-Parameters, um den Dienst abzurufen.

    Im folgenden Codebeispiel wird veranschaulicht, wie der Projektdienst verwendet wird, um in einer einfachen Projektelementtypdefinition eine Meldung in das Fenster Ausgabe und das Fenster Fehlerliste zu schreiben.

    <Export(GetType(ISharePointProjectItemTypeProvider))> _
    <SharePointProjectItemType("Contoso.CustomAction")> _
    Friend Class CustomActionProvider
        Implements ISharePointProjectItemTypeProvider
    
        Private Sub InitializeType(ByVal projectItemTypeDefinition As ISharePointProjectItemTypeDefinition) _
            Implements ISharePointProjectItemTypeProvider.InitializeType
            projectItemTypeDefinition.ProjectService.Logger.WriteLine("This message was written " & _
                "by using the project service in the Custom Action project item type.", _
                LogCategory.Message)
        End Sub
    End Class
    
    [Export(typeof(ISharePointProjectItemTypeProvider))]
    [SharePointProjectItemType("Contoso.CustomAction")]
    internal class CustomActionProvider : ISharePointProjectItemTypeProvider
    {
        public void InitializeType(ISharePointProjectItemTypeDefinition projectItemTypeDefinition)
        {
            projectItemTypeDefinition.ProjectService.Logger.WriteLine("This message was written " +
                "by using the project service in the Custom Action project item type definition.",
                LogCategory.Message);
        }
    }
    

    Weitere Informationen über das Definieren von Projektelementtypen, finden Sie unter Gewusst wie: Definieren eines SharePoint-Projektelementtyps.

Abrufen des Diensts in Server-Explorer-Erweiterungen

In einer Erweiterung des Knotens SharePoint-Verbindungen in Server-Explorer können Sie mit der ServiceProvider-Eigenschaft eines IExplorerNode-Objekts auf den Projektdienst zugreifen.

So rufen Sie den Dienst in einer Server-Explorer-Erweiterung ab

  1. Rufen Sie das IServiceProvider-Objekt der ServiceProvider-Eigenschaft eines IExplorerNode-Objekts in Ihrer Erweiterung ab.

  2. Verwenden Sie die GetService-Methode, um ein ISharePointProjectService-Projekt anzufordern.

    Im folgenden Codebeispiel wird veranschaulicht, wie der Projektdienst verwendet wird, um eine Meldung in die Fenster Ausgabe und Fehlerliste eines Kontextmenüs zu schreiben, das die Erweiterung in Server-Explorer Listenknoten hinzufügt.

    <Export(GetType(IExplorerNodeTypeExtension))> _
    <ExplorerNodeType(ExtensionNodeTypes.ListNode)> _
    Friend Class ListNodeExtension
        Implements IExplorerNodeTypeExtension
    
        Private projectService As ISharePointProjectService
    
        Private Sub Initialize(ByVal nodeType As IExplorerNodeType) _
            Implements IExplorerNodeTypeExtension.Initialize
            AddHandler nodeType.NodeMenuItemsRequested, AddressOf nodeType_NodeMenuItemsRequested
        End Sub
    
        Private Sub nodeType_NodeMenuItemsRequested(ByVal Sender As Object, ByVal e As ExplorerNodeMenuItemsRequestedEventArgs)
            Dim writeMessageMenuItem As IMenuItem = e.MenuItems.Add("Write Message to Output Window and Error List Window")
            AddHandler writeMessageMenuItem.Click, AddressOf writeMessageMenuItem_Click
        End Sub
    
        Private Sub writeMessageMenuItem_Click(ByVal Sender As Object, ByVal e As MenuItemEventArgs)
            Dim node As IExplorerNode = CType(e.Owner, IExplorerNode)
            If projectService Is Nothing Then
                projectService = CType(node.ServiceProvider.GetService(GetType(ISharePointProjectService)), ISharePointProjectService)
            End If
            projectService.Logger.WriteLine("Clicked the menu item for " + node.Text, LogCategory.Message)
        End Sub
    End Class
    
    [Export(typeof(IExplorerNodeTypeExtension))]
    [ExplorerNodeType(ExtensionNodeTypes.ListNode)]
    internal class ListNodeExtension : IExplorerNodeTypeExtension
    {
        private ISharePointProjectService projectService;
    
        public void Initialize(IExplorerNodeType nodeType)
        {
            nodeType.NodeMenuItemsRequested += nodeType_NodeMenuItemsRequested;
        }
    
        void nodeType_NodeMenuItemsRequested(object sender, ExplorerNodeMenuItemsRequestedEventArgs e)
        {
            IMenuItem writeMessageMenuItem = e.MenuItems.Add("Write Message to Output Window and Error List Window");
            writeMessageMenuItem.Click += writeMessageMenuItem_Click;
        }
    
        void writeMessageMenuItem_Click(object sender, MenuItemEventArgs e)
        {
            IExplorerNode node = (IExplorerNode)e.Owner;
            if (projectService == null)
            {
                projectService = (ISharePointProjectService)node.ServiceProvider.GetService(typeof(ISharePointProjectService));
            }
    
            projectService.Logger.WriteLine("Clicked the menu item for " + node.Text, LogCategory.Message);
        }
    }
    

    Weitere Informationen zum Erweitern des Knotens SharePoint-Verbindungen in Server-Explorer finden Sie unter Gewusst wie: Erweitern eines SharePoint-Knotens im Server-Explorer.

Abrufen des Diensts in anderen Visual Studio-Erweiterungen

Sie können den Projektdienst in einem VSPackage oder in einer beliebigen anderen Visual Studio-Erweiterung abrufen, die über Zugriff auf ein EnvDTE80.DTE2-Objekt im Automatisierungsobjektmodell verfügt, z. B. ein Add-In oder ein Projektvorlagen-Assistent, der die Microsoft.VisualStudio.TemplateWizard.IWizard-Schnittstelle implementiert.

In einem VSPackage können Sie mit einer der folgenden Methoden ein ISharePointProjectService-Objekt anfordern:

In einer Visual Studio-Erweiterung mit Zugriff auf ein EnvDTE80.DTE2-Objekt können Sie ein ISharePointProjectService-Objekt anfordern, indem Sie die GetService()-Methode eines Microsoft.VisualStudio.Shell.ServiceProvider-Objekts verwenden.Weitere Informationen finden Sie unter Gewusst wie: Ruft einen Dienst vom DTE-Objekt ab.

Ee471432.collapse_all(de-de,VS.110).gifBeispiel

Im folgenden Codebeispiel wird veranschaulicht, wie der Projektdienst in einem Visual Studio-Add-In abgerufen wird.Wenn Sie diesen Code verwenden möchten, führen Sie ihn von der Connect-Klasse in einem Add-In-Projekt aus.Das _applicationObject-Objekt wird automatisch in Add-In-Projekte generiert. Dieses Objekt ist eine Instanz der EnvDTE80.DTE2-Schnittstelle.

Dim serviceProvider As Microsoft.VisualStudio.Shell.ServiceProvider = _
    New Microsoft.VisualStudio.Shell.ServiceProvider( _
        TryCast(_applicationObject, Microsoft.VisualStudio.OLE.Interop.IServiceProvider))

Dim projectService As Microsoft.VisualStudio.SharePoint.ISharePointProjectService = _
    TryCast(serviceProvider.GetService(GetType(Microsoft.VisualStudio.SharePoint.ISharePointProjectService)), _
        Microsoft.VisualStudio.SharePoint.ISharePointProjectService)

If projectService IsNot Nothing Then
    projectService.Logger.WriteLine("This message was written by using the SharePoint project service.", _
        Microsoft.VisualStudio.SharePoint.LogCategory.Message)
End If
Microsoft.VisualStudio.Shell.ServiceProvider serviceProvider =
    new Microsoft.VisualStudio.Shell.ServiceProvider(
    _applicationObject as Microsoft.VisualStudio.OLE.Interop.IServiceProvider);

Microsoft.VisualStudio.SharePoint.ISharePointProjectService projectService = 
    serviceProvider.GetService(typeof(Microsoft.VisualStudio.SharePoint.ISharePointProjectService))
    as Microsoft.VisualStudio.SharePoint.ISharePointProjectService;

if (projectService != null)
{
    projectService.Logger.WriteLine("This message was written by using the SharePoint project service.",
        Microsoft.VisualStudio.SharePoint.LogCategory.Message);
}

Dieses Beispiel setzt Folgendes voraus:

  • Ein Visual Studio-Add-In-Projekt.Weitere Informationen finden Sie unter Gewusst wie: Erstellen von Add-Ins.

  • Verweise auf die Assemblys Microsoft.VisualStudio.OLE.Interop, Microsoft.VisualStudio.Shell und Microsoft.VisualStudio.SharePoint.

Siehe auch

Aufgaben

Gewusst wie: Erstellen von Add-Ins

Gewusst wie: Nehmen Sie einen Dienst in Anspruch

Gewusst wie: Ruft einen Dienst vom DTE-Objekt ab

Gewusst wie: Verwenden von Assistenten mit Projektvorlagen

Konzepte

Verwenden des SharePoint-Projektdiensts