调入 SharePoint 对象模型

在 Visual Studio 2010 中创建 SharePoint 工具扩展时,您可能必须调用 SharePoint API 来执行某些任务。 例如,如果为 SharePoint 项目创建自定义部署步骤,则可能必须调用 SharePoint API 执行一些任务以部署解决方案。

Microsoft SharePoint Foundation 2010 和 Microsoft SharePoint Server 2010 提供了可在 SharePoint 工具扩展中使用的两个不同的对象模型:服务器对象模型和客户端对象模型。 在 SharePoint 工具扩展的上下文中,每个对象模型均有各自的优点和缺点。

有关 SharePoint 对象模型的概述,请参见SharePoint 工具扩展的编程模型的概述

在扩展项目中使用客户端对象模型

在开发 SharePoint 工具扩展时,可以像使用任何其他托管 API 集一样在项目中使用客户端对象模型。 您可以将对客户端对象模型中的程序集的引用添加到项目中,也可以从代码直接调用客户端对象模型中的 API。

但是,在 SharePoint 工具扩展的上下文中,客户端对象模型具有两个缺点:

  • 客户端对象模型仅提供服务器对象模型的子集。 如果您必须使用客户端对象模型中未公开的 SharePoint 功能,则必须使用服务器对象模型。

  • 虽然在大多数情况下,在 SharePoint 工具扩展中使用客户端对象模型应是可行的,但您可能会遇到一些对客户端对象模型的调用未按预期进行的情况。 客户端对象模型旨在供客户端应用程序用来在远程服务器或场中调入 SharePoint 网站。 Visual Studio 中的 SharePoint 工具仅适用于开发计算机上的本地 SharePoint 安装。 因此,当您在 SharePoint 工具扩展中使用客户端对象模型时,您在本地计算机上调入 SharePoint 网站,但这不是客户端对象模型的原始用途。

有关演示如何在 Visual Studio 2010 中的 SharePoint 工具扩展中使用客户端对象模型的演练,请参见演练:在服务器资源管理器扩展中调入 SharePoint 客户端对象模型

在扩展项目中使用服务器对象模型

服务器对象模型是客户端对象模型的超集。 在使用服务器对象模型时,可以使用 Microsoft SharePoint Foundation 2010 和 Microsoft SharePoint Server 2010 以编程方式公开的所有功能。

SharePoint 工具扩展可以使用服务器对象模型中的 API,但不能直接调用这些 API。 只可以从面向 .NET Framework 3.5 的 64 位进程中调用服务器对象模型。 不过,SharePoint 工具扩展需要 .NET Framework 4,并且这些扩展会在 32 位 Visual Studio 进程中运行。 这将阻止 SharePoint 工具扩展直接引用 SharePoint 服务器对象模型中的程序集。

若要在 SharePoint 工具扩展中使用服务器对象模型,必须创建自定义 SharePoint 命令以调用 API。 在可直接调入服务器对象模型的辅助程序集中定义 SharePoint 命令。 在扩展项目中,通过使用 ISharePointConnection 对象的 ExecuteCommand 方法间接调用 SharePoint 命令。

有关创建和使用 SharePoint 命令的更多信息,请参见如何:创建 SharePoint 命令如何:执行 SharePoint 命令。 有关如何部署 SharePoint 命令的信息,请参见在 Visual Studio 中部署 SharePoint 工具扩展

有关演示如何创建和使用 SharePoint 命令的演练,请参见演练:为 SharePoint 项目创建自定义部署步骤演练:扩展服务器资源管理器以显示 Web 部件

了解如何执行 SharePoint 命令

定义 SharePoint 命令的程序集是在名为 vssphost4.exe 的 64 位宿主进程中加载的。 在 SharePoint 工具扩展中调用一条 SharePoint 命令后,此命令将由 vssphost4.exe 执行,而不是由 32 位 Visual Studio 进程 (devenv.exe) 执行。 可以通过设置注册表中的值来控制 SharePoint 命令的执行方式的某些方面。 有关更多信息,请参见在 Visual Studio 中调试 SharePoint 工具扩展

请参见

概念

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

其他资源

如何:创建 SharePoint 命令

如何:执行 SharePoint 命令