在 SharePoint Foundation 2010 和 SharePoint Server 2010 中重新部署自定义设置和解决方案

**摘要:**了解如何重新部署在 Microsoft SharePoint Server 2010 和 Microsoft SharePoint Foundation 2010 中为 Windows SharePoint Services 3.0 和 Microsoft Office SharePoint Server 2007 创建的自定义设置和自定义解决方案。

上次修改时间: 2011年1月12日

James Crowley,Microsoft Corporation

本文内容
2010 对象模型入门
安装升级程序
使用 2010 对象模型
用户界面更改
结束语
其他资源

Michael Washam,Microsoft Corporation

2009 年 10 月

适用范围: Business Connectivity Services | Office 2010 | Open XML | SharePoint Designer 2010 | SharePoint Foundation 2010 | SharePoint Online | SharePoint Server 2010 | Visual Studio

目录

  • 2010 对象模型入门

  • 安装升级程序

  • 使用 2010 对象模型

  • 用户界面更改

  • 结束语

  • 其他资源

下载随本文提供的弃用类型和方法的列表:Microsoft SharePoint Server 2010:弃用的类型和方法(该链接可能指向英文页面)

2010 对象模型入门

Microsoft SharePoint Foundation 2010 和 Microsoft SharePoint Server 2010 包含对象模型升级程序,这些升级程序的设计旨在与为 Windows SharePoint Services 3.0 和 Microsoft Office SharePoint Server 2007 开发的现有解决方案保持兼容。虽然某些命名空间、类和方法现已过时,但它们仍然可用,并可继续按预期方式在自定义代码中运行。此外,虽然用户界面 (UI) 改动很大,但向后兼容的视觉模式可以在您采用 UI 增强功能之前保留视觉自定义设置。在重新部署自定义设置和应用程序后,您可以使它们与 Microsoft SharePoint Foundation 2010 和 Microsoft SharePoint Server 2010 的升级版本同步。本文将指导您如何避免和克服当分别在 SharePoint Foundation 2010 和 Microsoft SharePoint Server 2010 中重新部署、测试和调试 Windows SharePoint Services 3.0 和 Office SharePoint Server 2007 代码时可能遇到的问题。

如果已使用 Microsoft Visual Studio 2005 Extensions for Windows SharePoint Services 3.0 版本 1.1、Microsoft Visual Studio 2005 Extensions for Windows SharePoint Services 3.0 版本 1.2 和 Microsoft Visual Studio 2005 Extensions for Windows SharePoint Services 3.0 版本 1.3 创建了 Windows SharePoint Services 3.0 或 Office SharePoint Server 2007 项目,则可使用 VSeWSS 升级工具(该链接可能指向英文页面)升级这些项目,该工具可安装特定模板,这些模板会将现有 Visual Studio extensions for Windows SharePoint Services 解决方案包(使用 Microsoft Visual Basic 或 Microsoft Visual C# 编写)转换为 Microsoft Visual Studio 2010 解决方案(图 1)。

图 1. 将 Visual Studio extensions for Windows SharePoint Services 项目导入 Visual Studio 2010

向 Visual Studio 2010 中导入 VSeWSS

在将 Visual Studio extensions for Windows SharePoint Services 解决方案转换为 Visual Studio 2010 解决方案后,必须将新的解决方案包部署到升级框架中。

安装升级程序

既可以执行就地升级(在已安装 Windows SharePoint Services 3.0 或 Office SharePoint Server 2007 的服务器场中),也可以在您或管理员将附加现有内容数据库的新服务器场中执行升级。在任一情况下,使用 SharePoint 解决方案包 (.wsp) 文件代替 Windows Installer (.msi) 程序包进行重新部署都可能最为有效。如果需要重新部署某网站模板,则必须根据此模板创建网站,并将其另存为解决方案包。开始时,最重要的注意事项时确保使用"14"文件夹(而非"12"文件夹)作为所有部署的目标位置;解决方案包可简化此操作。只要 SharePoint Foundation 2010 和 SharePoint Server 2010 在相应的"14"文件夹中找不到文件,它们就会检查 12\TEMPLATE\FEATURES 文件夹。但是,它们可能找不到部署到其他文件夹的自定义文件,如果将所有自定义文件都部署到"14"文件夹中,在调试安装时就容易得多。

使用解决方案包(.wsp 文件)

如果可能,可使用解决方案包(.wsp 文件)来部署自定义解决方案,因为这是确保所有自定义文件部署到正确位置的最好方法。有关在 Windows SharePoint Services 3.0 和 Office SharePoint Server 2007 中创建解决方案文件的信息,请参阅创建解决方案。有关在 SharePoint Foundation 2010 和 SharePoint Server 2010 中部署解决方案文件的信息,请参阅在 SharePoint 2010 中安装和部署场解决方案

使用 Windows Installer 文件

如果使用 Windows Installer (.msi) 程序包部署自定义解决方案,请务必对程序包进行更改,以使自定义文件部署到"14"文件夹中的正确位置。在将文件部署到 TEMPLATE\FEATURES 文件夹以外的其他位置时,更应如此。

重新部署网站模板

网站模板已被弃用。如果需要将网站模板重新部署到 SharePoint Foundation 2010 或 SharePoint Server 2010,请按照下列步骤操作:

  1. 根据此网站模板创建网站。

  2. 在现有服务器场或新服务器场中安装 SharePoint Foundation 2010 或 SharePoint Server 2010。如果在新服务器场中安装升级程序,请附加包含为新服务器场创建的网站的内容数据库。

  3. 在新安装的软件上,从"网站设置"页中选择"将网站另存为模板"。这将创建文件扩展名为 .wsp 的解决方案包。

使用 2010 对象模型

该对象模型包含许多更改和增强功能,但自定义代码仍会进行编译,并按预期方式运行,可能存在下面这种例外情况。如果任何自定义设置依赖于列表查询,该列表查询可能会生成超过 5,000 项的结果集或扫描包含 5,000 多项的列表中的所有行,则必须更改查询大小阈值(有关说明,请参阅 大列表查询限制)。否则,应密切关注包含的更改并根据自己的计划合并对象模型的新元素。升级后的对象模型可提供替代方法来帮助改善各种情况下自定义设置的设计和性能。

向后兼容性

由于升级程序中的 API 的更改具有向后兼容性,因此在 SharePoint Foundation 2010 或 SharePoint Server 2010 中重新部署自定义代码前不必更改它。虽然某些类和命名空间已过时,但它们仍可继续按照预期方式运行。如果要开始升级应用程序,以使它们使用最新的类和方法,请重新编译代码。编译器警告会告知您哪些对象模型元素已过时以及应使用哪些新的替代项。图 2 显示了 Visual Studio 2010 中出现的编译器警告和相应的鼠标悬停警告示例。

图 2. Visual Studio 2010 中弃用构造函数的编译器警告

Visual Studio 2010 中的编译器警告

有关 Microsoft SharePoint 2010 对象模型中弃用类型和方法的列表,请参阅 Microsoft SharePoint Server 2010:弃用的类型和方法(该链接可能指向英文页面)

SharePoint Server 2010 包含 1,500 多个弃用类型;大多数位于 Microsoft.SharePoint.Portal 命名空间中。SharePoint Foundation 2010 包含的弃用类型相对少得多,但却包含几百个弃用方法和属性。

您不需要重新编译为 Internet Information Services (IIS) 上运行的 Windows SharePoint Services 3.0 和 Office SharePoint Server 2007 编写的自定义代码。这表示您可以重用自定义 DLL 而无需重新编译;但是,在某些情况下,它们可能无法按照预期方式运行。例如,如果将所有文件重新部署到"14"文件夹并清空了"12"文件夹,则对"12"文件夹下文件的引用均不起作用。就像应重新编写引用"12"文件夹中的位置的 Windows Installer 程序包一样,还应该重新编写和重新编译引用已移到新位置的文件和资源的所有代码。您应当评估自定义设置是否适合安装的新版本,并确保依赖于旧版本具体细节的所有代码在您安装升级程序后仍能继续运行。

如果解决方案包括实现 FeatureInstalled、FeatureUninstalling、FeatureActivated 或 FeatureDeactivating 方法的功能接收器,并且您正在使用 Stsadm 命令行工具或定时服务进行部署,则应重新编译为 Office SharePoint Server 2007 编写的自定义代码。在安装解决方案之前,SharePoint Server 2010 中的程序集重定向由服务器 web.config 文件的条目进行处理,且命令行工具可能无法重定向到较新的程序集版本。

您必须重新编译为不在 IIS 上运行的 Windows SharePoint Services 3.0 和 Office SharePoint Server 2007(例如控制台应用程序和服务)编写的自定义代码。

大列表查询限制

SharePoint Foundation 2010 和 SharePoint Server 2010 应用 5,000 项的默认查询阈值。如果查询结果集超过此最大值,则依赖于这些结果集的任何自定义代码在升级后将无法按照预期方式运行。查询条件中包括非索引字段且超过 5,000 项的列表查询也会失败,因为那些查询必须扫描列表中的所有行。您可以增加此限值(在 SPList 对象上设置 EnableThrottling 属性),也可以启用对象模型来替代它。有关如何有效处理大文件夹和列表的指南,请参阅处理大型文件夹和列表在 SharePoint Server 中编写有效代码

增大默认查询阈值

  1. 在管理中心网站的"应用程序管理"下,单击"管理 Web 应用程序"。

  2. 单击"常规设置",然后单击"资源限制"(图 3)。

图 3. 在 SharePoint Foundation 2010 和 SharePoint Server 2010 中设置查询大小阈值

设置查询大小阈值

新 SharePoint 功能

SharePoint Foundation 2010 和 SharePoint Server 2010 对象模型的重要附加项包括如下所示的新功能:

  • Microsoft.SharePoint.Linq 命名空间,它可将 LINQ 定义为 SharePoint 提供程序,该程序可将 LINQ 查询转换为协作应用程序标记语言 (CAML) 查询(因此,您可用 LINQ 替换列表和 CAML 查询)。

  • Microsoft.SharePoint.Client 命名空间中的三个客户端 API,它们使您能够通过脚本与 SharePoint 网站交互,这些脚本通过 Microsoft .NET Framework 托管代码在浏览器中运行以及在 Microsoft Silverlight 应用程序中运行。

  • SharePoint Foundation 2010 和 SharePoint Server 2010 均包含 Business Connectivity Services 提供的许多附加项。借助这些更改,您可以更轻松地将外部业务数据和进程与服务器应用程序和客户端应用程序集成在一起。

有关如何使用这些 API 以及其他新 API 的信息,请参阅 SharePoint Foundation 2010 中的新增功能SharePoint Server 2010 的新增功能

图 4 中的图表提供了一个其中添加了许多类型的命名空间示例。

图 4. SharePoint Server 2010 中命名空间的新类型

按命名空间列出的新类型

用户界面更改

由于 SharePoint Foundation 2010 和 SharePoint Server 2010 中的 UI 变化很大,因此依赖于特定 CSS 类和 UI 元素的所有自定义设置最适合处于向后兼容模式中的用户。在升级到 SharePoint Foundation 2010 或 SharePoint Server 2010 时,可以选择向后兼容模式或升级后的用户界面。您可以在网站集级别/网站级别在向后兼容模式和新界面之间切换:

  • 若要保留现有网站的外观,请使用 PSConfig 和 PSConfigUI。

  • 若要在通过向新服务器场附加旧内容数据库进行升级时保留现有网站的外观,请使用 Stsadm。

还可以使用 Web 界面将网站集中的所有网站设置为升级后的 UI(防止用户使用旧界面)。

将网站集中的所有网站设置为升级后的 UI

  1. 在"网站设置"下,单击"网站集管理"

  2. 单击"支持的用户体验"[###Supported User Experiences](图 5)。

图 5. 在网站集级别更改 UI

更改网站集级别的用户界面

还可以为特定网站选择以前的外观。在"网站设置"下,单击"标题",单击"说明",然后单击"外观"(图 6)。

图 6. 在网站级别更改用户界面

更改网站级别的用户界面

还可以使用 SPWeb.UIVersion 属性以编程方式获取或设置 UI 版本(3 代表向后兼容模式,4 代表新界面)。

备注

在将 SPWeb.UIVersion 设置为 34 后,必须使用 SPWeb.Update 方法保存所做更改。

UIVersion 属性还可用于 SharePoint:VersionedContent 控件和 SharePoint:VersionedPlaceHolder 控件。这两个控件都可将受版本控制的内容置于页面上,但 SharePoint:VersionedPlaceHolder 在页面加载完成后呈现页面时才有效。

以下示例显示了如何在 .aspx 文件中实现这些控件。

<SharePoint:VersionedPlaceHolder ID="vph4" runat="server" UIVersion="4">
   <div>Content</div>
</SharePoint:VersionedPlaceHolder>
<SharePoint:UIVersionedContent ID="vc4" runat="server" UIVersion="4">
<ContentTemplate>
<div>Content</div>
</ContentTemplate>
<SharePoint:UIVersionedContent> 

您可以通过设置 SPWeb.UIVersionConfigurationEnabled、SPSite.UIVersionConfigurationEnabledInAllWebs 和 SPSite.UIVersionConfigurationEnabled 布尔属性,以编程方式在 Web 界面中启用或禁用"支持的用户体验"[###Supported User Experiences]设置。将 SPSite.UIVersionConfigurationEnabled 设置为 false 与在"网站操作"下选择"提交新用户体验"[###Commit new user experience]选项具有同样的效果。在任一情况下,均无法再使用 Web 界面从一种版本的 UI 切换到另一种版本(虽然仍可以通过设置前面提到的属性以编程方式切换)。

在向后兼容模式中,视觉自定义设置继续有效,您有权访问与主题有关的所有基础结构(包括 CSS)。向后兼容模式使您可以从容地迁移和升级自定义设置,以使它们适用于新界面。虽然某些视觉元素在新界面中可按照预期方式运行,但有些自定义操作(使用 ControlAssembly、ControlClass 和 ControlSrc 属性的操作)将不起作用。如果设置了许多视觉自定义项(特别是 CSS 和工具栏自定义项),则应从向后兼容模式开始。在部署完自定义项后,应使用升级后的界面测试它们,以确定需要更改哪些元素。

CSS 类的更改

由于新 CSS 变化很大,因此在 Windows SharePoint Services 3.0 和 Office SharePoint Server 2007 中依赖于 CSS 类的所有自定义设置和设计仅在向后兼容模式中有效。由于 SharePoint Foundation 2010 和 SharePoint Server 2010 中不再有主题,因此对主题所做的任何自定义设置和设计工作都无法导入新界面。在升级和重新部署后重新设计页面时,应自定义新的母版页,而不是尝试将原有的 CSS 用于重新设计的 UI。

自定义操作和工具栏附加项

大多数自定义操作(包括以链接和编辑控制块 (ECB) 菜单为目标的操作)在升级的界面中都会继续按照预期方式执行。由于工具栏已被功能区取代,因此在工具栏中添加按钮的大多数自定义操作都被置于功能区的"自定义命令"选项卡上(图 7)。

图 7. 工具栏上的自定义操作和功能区"自定义命令"选项卡上的自定义操作

工具栏上及功能区中的自定义操作

但是,使用 ControlAssembly 属性、ControlClass 属性或 ControlSrc 属性的任何 Custom Action Element 都不会显示在新界面中。若要在重新设计应用程序之前使这些工具栏附加项能够运行,可以使用向后兼容模式。也可以为使用包含此类自定义操作的自定义工具栏的每个列表视图和列表表单选择"显示完整工具栏"[###Show full toolbar]选项。"显示完整工具栏"[###Show full toolbar]选项可使工具栏与功能区一起显示,虽然这样可能会导致冗余功能,但在自定义工具栏只出现在数量有限的上下文中时,这也不失为一个不错的选择。

结束语

安装 SharePoint Foundation 2010 和 SharePoint Server 2010 后便可立即利用其中的增强功能;但是,不需要立即重新编写代码。所有弃用的 API 元素均可继续使用,因此在将新 API 元素合并到自定义设置之前,您有时间查看这些新元素。此外,向后兼容模式还使您能够从容地重新思考并根据需要重新设计自定义设置,以便充分利用新 UI。您也不必一次性对所有网站采用新 UI。某些网站可以保留上一版本的界面,而某些网站可以立即采用新版本。该框架使您能够迁移自定义设置,并分阶段、系统地利用新功能,从而以最适合您的步调采用增强功能。

其他资源