Comment : récupérer le service de projet SharePoint
Vous pouvez accéder au service du projet SharePoint dans les types de solution suivants :
Extension du système de projet SharePoint, telle qu'une extension de projet, une extension d'élément de projet ou une définition de type d'élément de projet.Pour plus d'informations sur ces types d'extensions, consultez Extension du système de projet SharePoint.
Une extension du nœud Connexions SharePoint dans l'Explorateur de serveurs.Pour plus d'informations sur ces types d'extensions, consultez Extension du nœud Connexions SharePoint dans l'Explorateur de serveurs.
Un autre type d'extension Visual Studio, tel qu'un complément ou un VSPackage.
Extraction du service dans les extensions de système de projet
Dans toute extension du système de projet SharePoint, vous pouvez accéder au service du projet à l'aide de la propriété ProjectService d'un objet ISharePointProject.
Il est également possible d'extraire le service du projet en procédant selon les façons suivantes.
Pour extraire le service dans une extension de projet
Dans votre implémentation de l'interface ISharePointProjectExtension, localisez la méthode Initialize.
Utilisez le paramètre projectService pour accéder au service.
L'exemple de code suivant montre comment utiliser le service du projet pour écrire un message dans la fenêtre Sortie et la fenêtre Liste d'erreurs dans une extension de projet simple.
<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); } }
Pour plus d'informations sur la création d'extensions de projet, consultez Comment : créer une extension de projet SharePoint.
Pour extraire le service dans une extension d'élément de projet
Dans votre implémentation de l'interface ISharePointProjectItemTypeExtension, localisez la méthode Initialize.
Utilisez la propriété ProjectService du paramètre projectItemType pour extraire le service.
L'exemple de code suivant montre comment utiliser le service du projet pour écrire un message dans la fenêtre Sortie et la fenêtre Liste d'erreurs dans une extension simple de l'élément de projet Définition de liste.
<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); } }
Pour plus d'informations sur la création d'extensions d'élément, consultez Comment : créer une extension d'élément de projet SharePoint.
Pour extraire le service dans une définition de type d'élément de projet
Dans votre implémentation de l'interface ISharePointProjectItemTypeProvider, localisez la méthode InitializeType.
Utilisez la propriété ProjectService du paramètre typeDefinition pour extraire le service.
L'exemple de code suivant montre comment utiliser le service du projet pour écrire un message dans la fenêtre Sortie et la fenêtre Liste d'erreurs dans une définition de type d'élément de projet simple.
<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); } }
Pour plus d'informations sur la définition de types d'élément de projet, consultez Comment : définir un type d'élément de projet SharePoint.
Extraction du service dans les extensions de l'Explorateur de serveurs
Dans une extension du nœud Connexions SharePoint dans l'Explorateur de serveurs, vous pouvez accéder au service du projet à l'aide de la propriété ServiceProvider d'un objet IExplorerNode.
Pour extraire le service dans une extension de l'Explorateur de serveurs
Obtenez un objet IServiceProvider de la propriété ServiceProvider d'un objet IExplorerNode dans votre extension.
Utilisez la méthode GetService pour demander un objet ISharePointProjectService.
L'exemple de code suivant montre comment utiliser le service du projet pour écrire un message dans la fenêtre Sortie et la fenêtre Liste d'erreurs dans un menu contextuel que l'extension ajoute afin de répertorier des nœuds dans l'Explorateur de serveurs.
<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); } }
Pour plus d'informations sur l'extension du nœud Connexions SharePoint dans l'Explorateur de serveurs, consultez Comment : étendre un nœud SharePoint dans l'Explorateur de serveurs.
Extraction du service dans d'autres extensions Visual Studio
Vous pouvez extraire le service du projet dans un VSPackage ou dans toute extension Visual Studio qui a accès à un objet EnvDTE80.DTE2 dans le modèle d'objet Automation, comme un complément ou un Assistant Modèle de projet qui implémente l'interface Microsoft.VisualStudio.TemplateWizard.IWizard.
Dans un VSPackage, vous pouvez demander un objet ISharePointProjectService à l'aide de l'une des méthodes suivantes :
Méthode GetService d'un VSPackage managé qui dérive de la classe Microsoft.VisualStudio.Shell.Package.Pour plus d'informations, consultez Comment : Consommer un service.
Méthode Package.GetGlobalService statique.Pour plus d'informations, consultez Comment : utilisation GetGlobalService.
Dans une extension Visual Studio qui a accès à un objet EnvDTE80.DTE2, vous pouvez demander un objet ISharePointProjectService à l'aide de la méthode GetService() d'un objet Microsoft.VisualStudio.Shell.ServiceProvider.Pour plus d'informations, consultez Comment : Obtenez un service de l'objet DTE.
Exemple
L'exemple de code suivant montre comment extraire le service du projet dans un complément Visual Studio.Pour utiliser ce code, exécutez-le à partir de la classe Connect dans un projet de complément.L'objet _applicationObject est généré automatiquement dans les projets de complément ; cet objet est une instance de l'interface EnvDTE80.DTE2.
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);
}
Cet exemple nécessite :
Projet de complément Visual Studio.Pour plus d'informations, consultez Comment : créer un complément.
Références aux assemblys Microsoft.VisualStudio.OLE.Interop, Microsoft.VisualStudio.Shell et Microsoft.VisualStudio.SharePoint.
Voir aussi
Tâches
Comment : Consommer un service
Comment : Obtenez un service de l'objet DTE
Comment : utiliser des Assistants avec des modèles de projet