Share via


从现有的 SharePoint 网站导入项

利用“导入 SharePoint 解决方案包”项目模板,您可以在新的 Visual Studio SharePoint 解决方案中重用现有 SharePoint 网站中的元素,例如,内容类型和字段。 虽然无需修改即可运行大多数导入的解决方案,但需要考虑一些限制和问题,尤其是在导入任何项后对这些项进行修改的情况下。

提示

若要导入可重用工作流,请使用“导入可重用工作流”项目模板。 有关更多信息,请参见 有关导入可重用工作流的准则.

支持的 SharePoint 解决方案

Visual Studio 2010 完全支持导入在 SharePoint Foundation 2010 和 SharePoint Server 2010 中创建的解决方案。

Visual Studio 2010 不支持导入在以下应用程序中创建的解决方案:

  • Windows SharePoint Services 3.0

  • Microsoft Office SharePoint Server 2007

  • Visual Studio 2008

  • Microsoft SharePoint Designer 2007

  • Visual Studio 2010

    提示

    换言之,Visual Studio 2010 不支持导入在 Visual Studio 2010 中创建的 SharePoint 解决方案。

虽然通常可以成功导入由这些应用程序创建的解决方案,但该功能未经测试且不受支持。

项导入限制

尽管可以从现有 .wsp 文件中导入大多数 SharePoint 项,但以下各项是不受支持的,可能需要进行修改才能使它们正确工作:

  • BDC 实体

  • 代码工作流关联元素

  • 代码工作流

  • 可视 Web 部件 (.ascx)

  • Web 服务 (.asmx)

  • 内容类型绑定

  • 事件接收器

  • 列表定义(模板)

  • 网站定义

在从 SharePoint Foundation 2010 或 SharePoint Server 2010 导出解决方案时,将自动从 .wsp 文件中排除这些项。 但是,由不受支持的工具生成的其他 .wsp 文件可能会包含这些项。 (请参见本主题中前面的“支持的 SharePoint 解决方案”一节。)

导入解决方案时出现的情况

在使用“导入 SharePoint 解决方案包”模板导入解决方案时,Visual Studio 将复制 .wsp 文件的全部内容,并尝试尽可能多地协调和保留已导入元素与其文件之间的关联和引用。

所有导入的项将复制到**“解决方案资源管理器”中对应的文件夹。 例如,内容类型出现在“内容类型”文件夹下,列表实例出现在“列表实例”**下。 与导入的项关联的文件也将复制到该项的文件夹中。 例如,导入的列表实例包括其模块、窗体和 ASPX 页。

依赖项

如果在“导入 SharePoint 解决方案包”向导中选择某一项,但没有选择其依赖项,则将显示一个消息框,通知您导入之前还必须选择相应的依赖项。

什么是功能?

SharePoint Designer 用户可能会看到一些称作“功能”的意想不到的文件出现在**“解决方案资源管理器”**中的导入的解决方案中。虽然功能过去就存在于 SharePoint Designer 解决方案中,但它们是隐藏的。 现在,功能在 Visual Studio 中是可见的。

功能是包含 SharePoint 项的容器。 每个功能都会保留对它所包含的每个项(如内容类型和列表定义)的引用。 在导入解决方案时,Visual Studio 将设置所有导入元素的功能,并尝试保留这些文件的功能与元素间的关系。 所有未能解析其引用的文件都将置于**“其他已导入文件”**文件夹中。

有关功能的更多信息,请参见开发 SharePoint 解决方案使用功能

处理特殊情况

在某些情况下,Visual Studio 无法协调项及其依赖文件。 所有 Visual Studio 未能解析的文件都将出现在**“其他已导入文件”文件夹下。 此外,这些文件的“DeploymentType”属性将设置为“NoDeployment”**,以便它们不会随解决方案一起部署。

例如,如果导入列表定义 ExpenseForms,则具有此名称的列表定义将与其 Elements.xml 和 Schema.xml 文件一起出现在**“解决方案资源管理器”中的“列表定义”文件夹下。 但其关联的 ASPX 和 HTML 窗体可能会放置在“其他已导入文件”文件夹下的名为“ExpenseForms”的文件夹中。 若要完成此导入,请在“解决方案资源管理器”中的 ExpenseForms 列表定义下移动这些文件,并将每个文件的“DeploymentType”属性从“NoDeployment”更改为“ElementFile”**。

在导入事件接收器时,Elements.xml 文件将会复制到正确位置,但必须手动将程序集包含在解决方案包中,以使其随解决方案一起部署。 有关以下内容的更多信息如何进行此操作的更多信息,请参见如何:添加和移除附加程序集

在导入工作流时,InfoPath 窗体将会复制到**“其他已导入文件”文件夹中。 如果 .wsp 文件包含 Web 模板,则将该文件设置为“解决方案资源管理器”**中的启动页。

导入字段和属性包

在导入具有多个字段的解决方案时,所有单独的字段定义将合并到一个 Elements.xml 文件中,此文件位于**“解决方案资源管理器”中一个名为“字段”的节点下。 同样,所有属性包项将合并到一个 Elements.xml 文件中,此文件位于一个名为“PropertyBags”**的节点下。

SharePoint 中的字段是指定数据类型(如文本、布尔值或查阅)的列。 有关更多信息,请参见 Building Block: Columns and Field Types(生成块:列和字段类型)。 利用属性包,可以向 SharePoint 中的对象(从场到 SharePoint 网站上的列表的所有内容)添加属性。 属性包将作为属性名和属性值的哈希表实现。 有关更多信息,请参见 Managing SharePoint Configuration(管理 SharePoint 配置)或 SharePoint Property Bag Settings(SharePoint 属性包设置)。

删除项目中的项

SharePoint 解决方案中的大多数项都具有一个或多个依赖项。 例如,列表实例依赖于内容类型,而内容类型依赖于字段。 导入 SharePoint 解决方案后,如果您删除此解决方案中的某个项而不删除其依赖项,则在您尝试部署解决方案之前,Visual Studio 不会告知您任何引用问题。 例如,如果导入的解决方案具有的列表实例依赖某个内容类型,而您删除了该内容类型,则在部署时可能会出现错误。 如果 SharePoint 服务器中不存在此依赖项,则会发生错误。 同样,如果删除的项也具有关联的属性包,则从**“PropertyBags”**的 Elements.xml 文件中删除这些属性包项。因此,如果在从已导入的解决方案中删除任何项时出现部署错误,请检查是否还需要删除任何依赖项。

还原缺少的功能特性

在导入解决方案时,将从导入的功能清单中略去一些可选的功能特性。 如果需要在新的功能文件中还原这些特性,请通过以下方式标识缺少的特性:将原始功能文件与新的功能清单进行比较,并按照如何:自定义 SharePoint 功能主题中的说明进行操作。

不对内置列表实例执行部署冲突检测

Visual Studio 不对内置列表实例(即,SharePoint 附带的默认列表实例)执行部署冲突检测。 不执行冲突检测是为了避免覆盖 SharePoint 上的内置列表实例。 仍将部署或更新内置列表实例,但决不会对其进行删除或覆盖。有关更多信息,请参见SharePoint 打包和部署疑难解答

导入 SharePoint Server 2010 工作流

如果导入在 SharePoint Server 2010 中创建的工作流,则此工作流在部署后将不会正确运行。 此工作流无法正确运行的原因是,缺少某些程序集且 SharePoint Server 2010 工作流包含 Visual Studio 工作流解决方案目前不支持的 InfoPath 窗体。 不过,在修复一些项后(如添加对 SharePoint Server 2010 程序集的引用并重新连接 InfoPath 窗体),可以使已导入的 SharePoint Server 2010 工作流正确工作。 有关更多信息,请参见 Importing SharePoint Server 2010 Workflows(导入 SharePoint Server 2010 工作流)。

项名称字符限制

Visual Studio 将项目和项目项名称(包括路径)限制为总共 260 个字符。 在导入解决方案时,如果项名称超出此限制,则会收到错误:

指定的路径、文件名或两者都太长。 完全限定文件名必须少于 260 个字符,而目录名必须少于 248 个字符。

若收到此错误,则不会创建相应的项。 通常导入的模块会出现此问题。 若要避免此问题,请执行下列操作:

  • 在**“添加新项目”**对话框中输入项目名称时,请使用项目的短名称。

  • 在尽可能接近根文件夹的位置创建项目,以便减小路径长度。

SharePointProductVersion 特性

如果导入在早期版本的 SharePoint(如 Windows SharePoint Services 3.0 或 Microsoft Office SharePoint Server 2007)中创建的解决方案,请将包清单中的 SharePointProductVersion 特性值更改为 12.0,或将脚本管理器控件插入到所有导入的网页中并将 SharePointProductVersion 特性值保持为 14.0。 否则,导入的 Web 窗体将不会显示在 SharePoint 中。

背景

SharePoint Foundation 2010 和 SharePoint Server 2010 中的解决方案包含一个名为 SharePointProductVersion 的特性。 SharePoint 在其包清单中使用此特性以确定为其设计解决方案的 SharePoint 的版本。 两个有效值为 12.0 和 14.0。 值 12.0 指示为 Windows SharePoint Services 3.0 或 Microsoft Office SharePoint Server 2007 设计项;值 14.0 指示为 SharePoint Foundation 2010 或 SharePoint Server 2010 设计项。

为了在呈现 ASPX 页时增强安全性,SharePoint Foundation 2010 和 SharePoint Server 2010 要求所有 ASPX 页或母版页包含脚本管理器控件。 有关脚本管理器的更多信息,请参见 ScriptManager 控件概述。 由于 Windows SharePoint Services 3.0 和 Microsoft Office SharePoint Server 2007 中未提供脚本管理器控件,因此必须向升级为 SharePoint Foundation 2010 或 SharePoint Server 2010 的任意 Windows SharePoint Services 3.0 或 Microsoft Office SharePoint Server 2007 页中添加一个脚本管理器控件。 使用标准母版页的 ASPX 页不需要脚本管理器控件,因为已向标准母版页中添加脚本管理器控件。 但是,未使用母版页的 ASPX 页或使用自定义母版页的 ASPX 页必须添加脚本控件,以便在 SharePoint Foundation 2010 或 SharePoint Server 2010 中工作。

在将 Windows SharePoint Services 3.0 或 Microsoft Office SharePoint Server 2007 项目导入到 Visual Studio 2010 中时,缺少脚本管理器控件可能会导致出现问题,因为所有新项目的 SharePointProductVersion 特性都被设置为 14.0。 如果部署的已升级项目具有一个不带脚本管理器的 Web 窗体,则该窗体将不会在 SharePoint 中显示。

请参见

任务

演练:从现有的 SharePoint 网站导入项

演练:将 SharePoint Designer 可重用工作流导入 Visual Studio

如何:向 SharePoint 项目添加现有 BDC 模型文件

其他资源

有关导入可重用工作流的准则