SharePoint 工具扩展的编程模型的概述

在 Visual Studio 中创建 SharePoint 工具扩展时,首先将实现由 SharePoint 工具公开的一个或多个扩展性接口。在大多数情况下,您还将使用 SharePoint 工具提供的其他类型来实现扩展中的功能。在某些方案中,您还可以使用 Visual Studio 和 SharePoint 提供的其他对象模型中的类型。您必须了解每个对象模型的用途以及如何将这些对象模型结合使用,以创建 SharePoint 工具扩展。

通过实现扩展性接口来扩展 SharePoint 工具

Visual Studio 使用 .NET Framework 4 中的 Managed Extensibility Framework (MEF) 为 SharePoint 工具提供扩展性模型。MEF 是一个在 System.ComponentModel.Composition 程序集中实现的 API,它使应用程序能够公开扩展性点并在运行时发现和加载扩展。有关 MEF 的更多信息,请参见 Managed Extensibility Framework (MEF)

若要扩展 SharePoint 工具,请实现由 Visual Studio 公开的一个或多个扩展性接口。必要时,您还必须将 System.ComponentModel.Composition.ExportAttribute 和其他特定于 SharePoint 工具的特性应用于接口实现。下表列出了一些接口,可实现这些接口以扩展 SharePoint 工具。

接口

描述

ISharePointProjectItemTypeProvider

实现此接口可定义新类型的 SharePoint 项目项。有关示例,请参见如何:定义 SharePoint 项目项类型

ISharePointProjectItemTypeExtension

实现此接口可扩展已在 Visual Studio 中安装的 SharePoint 项目项类型。有关示例,请参见如何:创建 SharePoint 项目项扩展

ISharePointProjectExtension

实现此接口可扩展 SharePoint 项目。有关示例,请参见如何:创建 SharePoint 项目扩展

IDeploymentStep

实现此接口可定义一个新的可在部署或撤消 SharePoint 项目项时执行的部署步骤。有关示例,请参见演练:为 SharePoint 项目创建自定义部署步骤

IExplorerNodeTypeExtension

实现此接口可在“服务器资源管理器”窗口中的“SharePoint 连接”节点下展开现有节点。有关示例,请参见如何:扩展服务器资源管理器中的 SharePoint 节点

IExplorerNodeTypeProvider

实现此接口可在“服务器资源管理器”窗口中的“SharePoint 连接”节点下定义新类型的节点。有关示例,请参见如何:扩展服务器资源管理器中的 SharePoint 节点

IFeatureValidationRule

实现此接口可定义自定义功能验证规则。有关示例,请参见如何:为 SharePoint 解决方案创建自定义功能和包验证规则

IPackageValidationRule

实现此接口可定义自定义包验证规则。有关示例,请参见如何:为 SharePoint 解决方案创建自定义功能和包验证规则

在实现 SharePoint 工具扩展后,您必须在 Visual Studio 扩展 (VSIX) 包中部署扩展程序集,才能允许 Visual Studio 发现和加载该扩展。有关更多信息,请参见在 Visual Studio 中部署 SharePoint 工具扩展

了解在 SharePoint 工具扩展中使用的对象模型

在创建 SharePoint 工具扩展时可使用多种对象模型:

  • SharePoint 工具对象模型。此对象模型提供了扩展性接口(可实现这些接口以创建 SharePoint 工具扩展)和其他相关类型。

  • Visual Studio 自动化对象模型和集成对象模型。使用这些对象模型可访问 SharePoint 工具对象模型范围之外的 Visual Studio 功能。

    说明说明

    利用 SharePoint 项目服务,可以将 SharePoint 工具对象模型中的一些对象转换为 Visual Studio 自动化对象模型和集成对象模型中的对象,或进行相反的转换。有关更多信息,请参见在 SharePoint 项目系统类型和其他 Visual Studio 项目类型之间进行转换

  • SharePoint 服务器对象模型和客户端对象模型。使用这些对象模型可从 SharePoint 工具扩展的上下文中修改 SharePoint 网站或检索 SharePoint 网站中的数据。

Ee256705.collapse_all(zh-cn,VS.110).gifSharePoint 工具对象模型

每个 SharePoint 工具扩展都使用 SharePoint 工具对象模型中的类型来定义扩展的核心行为和功能。下表描述此对象模型中包含的命名空间。

程序集

命名空间

描述

Microsoft.VisualStudio.SharePoint.dll

Microsoft.VisualStudio.SharePoint

包含用于扩展和自动化 SharePoint 项目系统的类型。例如,您可以扩展内置 SharePoint 项目和项目项,也可以创建自己的项目项。有关更多信息,请参见扩展 SharePoint 项目系统

Microsoft.VisualStudio.SharePoint.Deployment

包含用于扩展 SharePoint 项目的部署过程(例如,创建您自己的部署步骤和部署配置)的类型。有关更多信息,请参见扩展 SharePoint 打包和部署

Microsoft.VisualStudio.SharePoint.Explorer

包含用于在“服务器资源管理器”窗口中的“SharePoint 连接”节点下展开节点或定义新类型的节点的类型。有关更多信息,请参见扩展服务器资源管理器中的“SharePoint 连接”节点

Microsoft.VisualStudio.SharePoint.Features

包含用于访问 SharePoint 项目中的功能定义的类型。

Microsoft.VisualStudio.SharePoint.Packages

包含用于访问 SharePoint 解决方案中的包定义的类型。

Microsoft.VisualStudio.SharePoint.Validation

包含用于为 SharePoint 项目自定义功能和包验证行为的类型。有关更多信息,请参见如何:为 SharePoint 解决方案创建自定义功能和包验证规则

Microsoft.VisualStudio.SharePoint.Commands.dll

Microsoft.VisualStudio.SharePoint.Commands

包含用于创建自定义 SharePoint 命令的类型。SharePoint 命令是一个用于从 SharePoint 工具扩展中调入 SharePoint 服务器对象模型的方法。有关更多信息,请参见调入 SharePoint 对象模型

Microsoft.VisualStudio.SharePoint.Explorer.Extensions.dll

Microsoft.VisualStudio.SharePoint.Explorer.Extensions

包含可用于获取有关内置“服务器资源管理器”节点的信息的类型,这些节点表示 SharePoint 网站上的各个组件,如表示列表、字段或内容类型的节点。有关更多信息,请参见扩展服务器资源管理器中的“SharePoint 连接”节点

Ee256705.collapse_all(zh-cn,VS.110).gifVisual Studio 自动化对象模型

Visual Studio 自动化对象模型提供了可用于自动化 Visual Studio 项目和 IDE 的 API。使用 Visual Studio 对象模型可执行与项目相关的任务(非 SharePoint 项目专用任务),或执行 Visual Studio 中的其他常规自动化任务。虽然从传统上说,此对象模型通常在 Visual Studio 外接程序和宏中使用,但您也可以在 SharePoint 工具扩展中使用它。

EnvDTE.dll 程序集中定义了 Visual Studio 自动化对象模型的主要部分。EnvDTE80.dll、EnvDTE90.dll、EnvDTE100.dll 和 EnvDTE110.dll 程序集分别提供在 Visual Studio 2005 中,Visual Studio 2008 中,Visual Studio 2010 和 Visual Studio 2012中引入的其他功能。这些程序集包含在 Visual Studio。

有关自动化对象模型的更多信息,请参见扩展 Visual Studio 环境自动化与扩展性参考

Ee256705.collapse_all(zh-cn,VS.110).gifVisual Studio 集成对象模型

集成对象模型提供了一些 API,可以使用这些 API 通过创建 VSPackage 来向 Visual Studio 中添加功能。VSPackage 是一个模块,它通过提供自定义功能(如工具窗口、编辑器、设计器、服务和项目)来扩展 Visual Studio IDE。

若要添加将用于内置 SharePoint 工具的新 Visual Studio 功能,则可以使用集成对象模型。例如,如果创建一个表示 SharePoint 网站的自定义操作的自定义 SharePoint 项目项,则也可以创建一个实现该自定义操作的设计器的 VSPackage。您可以将设计器与该自定义操作以便快捷菜单项添加到表示在 解决方案资源管理器的自定义操作的项目项。可以通过打开其快捷菜单 (通过右击自定义操作"项目项或通过选择然后选择 SHIFT + F10 键) 然后选择 打开打开您的设计器。

Visual Studio SDK 附带的一组程序集中定义了此对象模型。此对象模型中的一些主程序集中包含 Microsoft.VisualStudio.Shell.11.0.dll、Microsoft.VisualStudio.Shell.Interop.dll 和 Microsoft.VisualStudio.OLE.Interop.dll。

有关集成对象模型的更多信息,请参见 Visual Studio 开发环境模型Visual Studio SDK 参考

Ee256705.collapse_all(zh-cn,VS.110).gifSharePoint 对象模型

SharePoint 工具扩展可以使用 SharePoint API 来修改 SharePoint 网站或从 SharePoint 网站检索数据。Microsoft SharePoint Foundation 2010 和 Microsoft SharePoint Server 2010 提供了两个不同的对象模型:服务器对象模型和客户端对象模型。

可以在 SharePoint 工具扩展中使用任一对象模型中的 API,但在 SharePoint 工具扩展的上下文中,每个对象模型均有各自的优点和缺点。有关更多信息,请参见调入 SharePoint 对象模型

对象模型

描述

服务器对象模型

通过服务器对象模型,可以访问 Microsoft SharePoint Foundation 2010 和 Microsoft SharePoint Server 2010 以编程方式公开的所有功能。此对象模型旨在供在 SharePoint Server 上运行的 SharePoint 解决方案使用。Microsoft.SharePoint.dll 程序集中定义了此对象模型的大部分内容。有关服务器对象模型的更多信息,请参见 Using the SharePoint Foundation Server-Side Object Model(使用 SharePoint Foundation Server 端对象模型)。

客户端对象模型

客户端对象模型是服务器对象模型的子集,可用于从远程客户端或服务器与 SharePoint 数据进行互操作。它旨在将执行常规任务时必须执行的往返次数减至最小。Microsoft.SharePoint.Client.dll 和 Microsoft.SharePoint.Client.Runtime.dll 程序集中定义了客户端对象模型的大部分内容。有关客户端对象模型的更多信息,请参见 Managed Client Object Model(托管客户端对象模型)。

请参见

概念

调入 SharePoint 对象模型

Visual Studio 开发环境模型

使用 SharePoint 项目服务

其他资源

扩展 Visual Studio 中的 SharePoint 工具