Como: Recuperar o serviço de projeto do SharePoint
Você pode acessar o serviço de projeto do SharePoint nos seguintes tipos de soluções:
Uma extensão do sistema de projeto SharePoint, como, por exemplo, uma extensão de projeto, a extensão de item de projeto ou a definição de tipo de item de projeto. Para obter mais informações sobre esses tipos de extensões, consulte Estendendo o sistema de projeto do SharePoint.
Uma extensão de sharepoint Connections nó na Server Explorer. Para obter mais informações sobre esses tipos de extensões, consulte Estendendo o nó de conexões do SharePoint no Server Explorer.
Outro tipo de extensão de Visual Studio, como, por exemplo, um suplemento ou um VSPackage.
Recuperando o serviço de extensões de sistema do projeto
Em qualquer extensão do sistema de projeto do SharePoint, você pode acessar o serviço de projeto usando o ProjectService propriedade de um ISharePointProject objeto.
Você também pode recuperar o serviço de projeto usando os procedimentos a seguir.
Para recuperar o serviço em uma extensão de projeto
Na implementação da ISharePointProjectExtension interface, localize o Initialize método.
Use o projectService parâmetro para acessar o serviço.
O exemplo de código a seguir demonstra como usar o serviço de projeto para gravar uma mensagem para o saída janela e Error List janela em uma extensão de projeto simples.
<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); } }
Para obter mais informações sobre como criar extensões do projeto, consulte Como: Criar uma extensão de projeto do SharePoint.
Para recuperar o serviço em uma extensão de item de projeto
Na implementação da ISharePointProjectItemTypeExtension interface, localize o Initialize método.
Use o ProjectService propriedade da projectItemType parâmetro para recuperar o serviço.
O exemplo de código a seguir demonstra como usar o serviço de projeto para gravar uma mensagem para o saída janela e Error List janela em uma simples extensão da Definição de lista o item de projeto.
<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); } }
Para obter mais informações sobre como criar extensões de item de projeto, consulte Como: Criar uma extensão de Item de projeto do SharePoint.
Para recuperar o serviço de uma definição de tipo de item de projeto
Na implementação da ISharePointProjectItemTypeProvider interface, localize o InitializeType método.
Use o ProjectService propriedade da typeDefinition parâmetro para recuperar o serviço.
O exemplo de código a seguir demonstra como usar o serviço de projeto para gravar uma mensagem para o saída janela e Error List janela em uma definição de tipo de item de projeto simples.
<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); } }
Para obter mais informações sobre como definir os tipos de item de projeto, consulte Como: Definir um tipo de Item de projeto do SharePoint.
Recuperando o serviço de extensões de servidor do Explorer
Em uma extensão da sharepoint Connections nó Server Explorer, você pode acessar o serviço de projeto usando o ServiceProvider propriedade de um IExplorerNode objeto.
Para recuperar o serviço de uma extensão do Server Explorer
Obtenha um IServiceProvider de objeto da ServiceProvider propriedade de um IExplorerNode objeto em sua extensão.
Use o GetService método para solicitar um ISharePointProjectService objeto.
O exemplo de código a seguir demonstra como usar o serviço de projeto para gravar uma mensagem para o saída janela e Error List janela a partir de um menu de atalho, adiciona a extensão de nós de lista em Server Explorer.
<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); } }
Para obter mais informações sobre como estender o sharepoint Connections nó Server Explorer, consulte Como: Estender um nó do SharePoint no Server Explorer.
Recuperando o serviço de outras extensões de Visual Studio
Você pode recuperar o serviço de projeto em um VSPackage ou em qualquer extensão de Visual Studio que tem acesso a uma EnvDTE80.DTE2 o objeto no modelo de objeto de automação, como, por exemplo, um suplemento ou um Assistente de modelo de projeto que implementa o Microsoft.VisualStudio.TemplateWizard.IWizard interface.
Um VSPackage, você pode solicitar um ISharePointProjectService o objeto usando um dos seguintes métodos:
O GetService método VSPackage gerenciado que deriva do Microsoft.VisualStudio.Shell.Package classe. Para obter mais informações, consulte How to: Consume a Service.
Estática Package.GetGlobalService método. Para obter mais informações, consulte How to: Use GetGlobalService.
Em uma extensão de Visual Studio tem acesso a um EnvDTE80.DTE2 o objeto, você pode solicitar um ISharePointProjectService objeto usando o GetService() método de um Microsoft.VisualStudio.Shell.ServiceProvider objeto. Para obter mais informações, consulte How to: Get a Service from the DTE Object.
Exemplo
O exemplo de código a seguir demonstra como recuperar o serviço de projeto em um suplemento de Visual Studio. Para usar esse código, executá-lo do Connect a classe em um suplemento do projeto. O _applicationObject objeto é gerado automaticamente nos projetos do suplemento; Este objeto é uma instância de EnvDTE80.DTE2 interface.
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);
}
Este exemplo requer:
Um Visual Studio suplemento do projeto. Para obter mais informações, consulte Como: criar um Adicionar-.
Referências aos assemblies Microsoft.VisualStudio.OLE.Interop, Microsoft.VisualStudio.Shell e Microsoft.VisualStudio.SharePoint.
Consulte também
Tarefas
How to: Get a Service from the DTE Object
Como: Usar assistentes com modelos de projeto