部署解决方案包 (SharePoint Server 2010)

 

适用于: SharePoint Server 2010

上一次修改主题: 2016-11-30

本文介绍各个解决方案包,及其在 Microsoft SharePoint Server 2010 中部署创作和开发的自定义设置时发挥的作用。本文还包含有关导入和部署解决方案包的步骤,以及使用 Microsoft Visual Studio 2010 构建和部署解决方案包的示例。

本文内容:

  • 什么是解决方案包?

  • 使用解决方案包部署网站元素

  • 使用 Visual Studio 2010 创建和部署自定义 Web 部件解决方案包

什么是解决方案包?

解决方案包 是一个分发包,可将您的 SharePoint Server 2010 自定义开发工作分发到您的服务器场中的 Web 服务器或应用程序服务器。解决方案可用于打包和部署自定义功能、网站定义、模板、布局页、Web 部件、级联样式表和程序集。

本文不讨论沙盒解决方案部署。您可以将 Microsoft SharePoint Server 2010 解决方案直接部署到 SharePoint Server 服务器场,也可以将该解决方案部署到沙盒。沙盒是一个受限制的执行环境,可使程序仅访问某些资源,并使在沙盒中发生的问题不会影响服务器环境的其余部分。有关详细信息,请参阅沙盒解决方案概述 (SharePoint Server 2010)

解决方案包是文件扩展名为 .wsp 的 CAB 文件和清单文件。建议您在开发和打包 SharePoint 解决方案时将 Visual Studio 2010 工具用于 SharePoint 2010。还可使用诸如 Makecab.exe 和 SharePoint Packman 之类的工具手动创建解决方案包。

可以打包到解决方案中的组件包括:

  • .NET Framework 程序集,通常是 Web 部件程序集和事件接收器程序集。

  • 部署文件,例如资源文件、页面或其他帮助程序文件。

  • 功能,使您能够激活和停用网站中的代码,提供包括自定义列表、库、字段和内容类型等元素的功能。

  • 新的模板和网站定义。

  • 必须在 Web 服务器级别执行的配置,例如,对用于注册 Web 部件的 Web.config 文件部署自定义设置。还可使用通过某功能分发的功能修改这些配置。

  • Web 内容,例如网页和网页调用的图像。如果必须在断开连接的环境中部署 Web 内容,应使用内容部署包。

使用解决方案包部署网站元素

本节内容:

  • 何时使用解决方案包

  • 部署服务器场解决方案

  • 导入解决方案包

  • 部署解决方案包

  • 关于创建解决方案包

何时使用解决方案包

部署自定义设置的最佳实践是将解决方案包作为简单、安全且一致的应用程序生命周期管理过程的一部分。在创建网站后,可通过解决方案包更加轻松地更改这些网站的功能。

您可以使用解决方案包部署新解决方案,以及升级服务器场中的现有解决方案。您可以将所有 SharePoint Server 实体打包为一个文件,将该文件添加到解决方案存储区,以及将其部署到服务器场中的前端 Web 服务器。解决方案包可用于同步前端 Web 服务器,以使其状态与服务器场中其他 Web 服务器的状态一致。

您可以使用解决方案包将创作的网站元素自定义设置从集成服务器场部署到创作服务器场、试验服务器场或生产服务器场。在 SharePoint Server 中,用户可以将自定义网站另存为模板。这样可以创建可在其他服务器场中部署的且文件扩展名为 .wsp 的解决方案包。

您可以使用解决方案包在以下环境之间部署自定义设置:

  • 从开发人员工作站到集成服务器场或软件配置管理系统

  • 从集成服务器场和创作客户端工作站到试验或生产服务器场

部署服务器场解决方案

既可在本地部署服务器场解决方案,也可使用定时服务部署场解决方案。可通过以下方式触发本地部署和基于计时器的部署:使用命令行指令或使用对象模型以编程方式触发。

本地部署

在本地部署中,仅对从中启动部署操作的计算机部署解决方案文件。仅在将解决方案文件部署到服务器场中的所有可用服务器之后,才会在配置数据库中将该解决方案标记为“已部署”。然后会安装解决方案功能,并将架构和定义文件提交到配置存储区。

定时服务部署

在使用定时服务的部署中,部署时会创建计时器作业。该计时器作业由服务器场中每个 Web 服务器上的定时服务选取。首先,对清单和功能清单进行解析,以便查找复制到相应位置的程序集和 _layouts 文件。功能目录中包含的所有其他文件都会复制到功能目录中。在将解决方案文件复制到目标计算机后,将计划对所有前端 Web 服务器进行配置重置;然后重置过程会部署文件并重新启动 Microsoft Internet Information Services (IIS)。然后注册解决方案功能,将架构和定义文件提交到配置存储区。

有关解决方案存储区、部署和同步的详细信息,请参阅 Microsoft SharePoint 2010 软件开发工具包 (SDK) 中的部署解决方案(该链接可能指向英文页面) (https://go.microsoft.com/fwlink/?linkid=186995&clcid=0x804)(该链接可能指向英文页面)

添加解决方案包

必须将解决方案包添加到 SharePoint Server 服务器场的解决方案数据库中,然后才能部署该解决方案包。

重要

您必须是运行 Windows PowerShell 的任何计算机上 Administrators 组的成员。

使用 Windows PowerShell 导入解决方案包

  1. 验证您是否满足以下最低要求:请参阅 Add-SPShellAdmin。。

  2. 在“开始”菜单上,单击“所有程序”。

  3. 单击“Microsoft SharePoint 2010 产品”。

  4. 单击“SharePoint 2010 Management Shell”。

  5. 在 Windows PowerShell 命令提示符处,键入以下命令:

    Add-SPSolution -LiteralPath <SolutionPath>
    

解决方案即被添加到服务器场的解决方案存储区中。若要使用该解决方案,请按照本文下一节中的步骤操作。有关详细信息,请参阅 Add-SPSolution

部署解决方案包

您可以使用管理中心网站或 Windows PowerShell 来部署导入的解决方案。在使用 Windows PowerShellAdd-SPSolution cmdlet 将某解决方案添加到解决方案存储区后,必须将该解决方案部署到网站,然后才能对其进行访问。

备注

不能使用管理中心中的“解决方案管理”页将解决方案添加到解决方案存储区。

下面的过程演示如何使用管理中心网站或 Windows PowerShell 将导入的解决方案部署到服务器场中的网站。

使用管理中心部署解决方案

  1. 在管理中心主页上,单击“系统设置”。

  2. 在“场管理”部分,单击“管理场解决方案”。

  3. 在“解决方案管理”页上,单击要部署的解决方案。

  4. 在“解决方案属性”页中,单击“部署解决方案”。

  5. 在“部署解决方案”页上的“部署时间”部分中,选择下列选项之一:

    • 立即

    • 在指定时间。如果选择此选项,请使用日期和时间框来指定时间。建议您选择目标服务器负载较小的时间。

  6. 在“部署位置”部分的“特定 Web 应用程序”列表中,单击“所有 Web 应用程序”,或选择一个特定 Web 应用程序。

  7. 单击“确定”。

使用 Windows PowerShell 将解决方案包部署到 Web 应用程序

  1. 验证您是否满足以下最低要求:请参阅 Add-SPShellAdmin

  2. 在“开始”菜单上,单击“所有程序”。

  3. 单击“Microsoft SharePoint 2010 产品”。

  4. 单击“SharePoint 2010 Management Shell”。

  5. 在 Windows PowerShell 命令提示符处,键入以下命令:

    Install-SPSolution -Identity <SolutionName> -WebApplication <URLname>
    

    其中:

    • <SolutionName> 是解决方案的名称。

    • <URLname> 是要向其中部署导入的解决方案的 Web 应用程序的 URL。

    默认情况下,会立即部署该解决方案。也可以使用 time 参数制定部署计划。有关详细信息,请参阅 Install-SPSolution

使用 Windows PowerShell 将解决方案包部署到所有 Web 应用程序

  1. 验证您是否满足以下最低要求:请参阅 Add-SPShellAdmin

  2. 在“开始”菜单上,单击“所有程序”。

  3. 单击“Microsoft SharePoint 2010 产品”。

  4. 单击“SharePoint 2010 Management Shell”。

  5. 在 Windows PowerShell 命令提示符处,键入以下命令:

    Install-SPSolution -Identity <SolutionName> -AllWebApplications -time <TimeToDeploy> -GACDeployment -CASPolicies
    

    其中:

    • GACDeployment 是一个参数,可使 SharePoint Server 2010 在全局程序集缓存中部署程序集。

    • CASPolicies 允许创建自定义代码访问安全性 (CAS) 策略文件,并在目标网站集的 Web.config 文件中激活该文件。

    默认情况下,会立即部署该解决方案。也可以使用 time 参数制定部署计划。

关于创建解决方案包

SharePoint Server 2010 不包括创建解决方案包的工具。本节介绍如何创建包含已开发的网站元素和项目的解决方案包。

Visual Studio 2010

您可以使用 Visual Studio 2010 将相关的 SharePoint 元素分组为功能,然后将多个功能、网站定义、程序集和其他文件捆绑到一个包(.wsp 文件),以部署到运行 SharePoint Server 2010 的服务器。您可以使用 Visual Studio 2010 在开发计算机上调试和测试运行 SharePoint Server 2010 的服务器上的 .wsp。还可以在开发计算机上自定义部署步骤。

通过使用自动构建过程,开发人员可在 Visual Studio 2010 中构建其 SharePoint 解决方案并生成 .wsp 文件。通过使用 Visual Studio 2010 集成,还可将用于生成 .wsp 文件的 Visual Studio SharePoint 项目的源代码添加到源代码控制系统中。Visual Studio 2010 可以导入 .wsp 文件并创建项目,以便进一步扩展它们和新建 .wsp 文件。导入 Visual Studio 2010 中的 .wsp 文件的主数据源是在 SharePoint Server 2010 网站上使用“另存为模板”命令从网站保存的模板。这些模板可用于将所有网站自定义设置保存到 SharePoint 解决方案。

有关详细信息,请参阅在 Visual Studio 中开发 SharePoint(该链接可能指向英文页面) (https://go.microsoft.com/fwlink/?linkid=187000&clcid=0x804)(该链接可能指向英文页面)。

Makecab

使用 Makecab.exe 等工具可以手动创建解决方案包。Makecab.exe 工具采用指向 .ddf 文件的指针,该文件描述了 CAB 文件的结构。.ddf 文件的格式类似于 .inf 文件的格式,即声明一个标准头,然后按照文件集在磁盘上的位置以及应在 CAB 文件中的位置枚举该文件集(每行一个文件)。

可以从 Microsoft Cabinet 软件开发工具包(https://go.microsoft.com/fwlink/?linkid=107292&clcid=0x804) 下载 Makecab.exe 工具。

SharePoint PackMan

SharePoint PackMan 工具简化了 SharePoint 解决方案的打包和管理的过程。将文件拖放到该工具中,即可创建 .ddf 文件和 manifest.xml 文件,然后从命令提示符运行 Makecab.exe。SharePoint PackMan 还简化了在服务器场、Web 应用程序或网站集中添加、部署、收回和删除一个或多个解决方案的过程。

可从 CodeBox 下载 SharePoint PackMan 工具:https://codebox/sppackman (https://go.microsoft.com/fwlink/?linkid=107292&clcid=0x804)。

关于自定义解决方案包

如果需要在 SharePoint Server 2010 解决方案中进行以下任何自定义,建议您使用 Visual Studio 2010 自定义解决方案包。还可通过手动创建 SharePoint 解决方案包来进行这些自定义。

  • 在专用应用程序文件夹(而不是全局程序集缓存)中部署 .NET Framework 程序集。

  • 为解决方案添加在部署过程中必须应用的代码访问安全权限。

  • 使用非默认的功能文件夹名称。

  • 对解决方案进行本地化。

  • 将功能事件处理程序与特定类型的 SharePoint Foundation 2010 解决方案(例如 Web 部件解决方案)相关联。

  • 将 XML 文件、图片, .dll 文件和程序集等资源添加到解决方案包中。

手动创建解决方案文件

在大多数 SharePoint Server 2010 开发方案中,建议您对 SharePoint 2010 使用 Visual Studio 2010 工具来开发和打包 SharePoint 解决方案。在 Visual Studio 2010 中,在部署过程中会将 .wsp 文件复制到运行 SharePoint Server 2010 的服务器,安装此解决方案,然后激活相应功能。

还可手动创建解决方案文件。下面是创建解决方案文件的基本步骤:

  1. 将所有单个解决方案文件收集到一个文件夹中。没有关于执行此操作的具体指南,但最好将不同类型的解决方案文件放在各自的子文件夹中。

  2. 创建用于列出解决方案组件的 manifest.xml 文件。

  3. 创建用于定义解决方案文件结构的 .ddf 文件。该文件包含确定输出 .wsp 文件的各个解决方案文件的列表。

  4. 执行 Makecab.exe,将 .ddf 文件作为输入文件,将 .wsp 文件作为输出文件。

关于解决方案清单文件

解决方案清单(通常称为 manifest.xml)存储在解决方案文件的根位置。此文件定义要处理的功能、网站定义、资源文件、Web 部件文件和程序集的列表。它不定义文件结构。如果文件包含在解决方案中,但未列在 manifest.xml 文件中,则无论如何都不会处理这些文件。

下面是 manifest.xml 文件结构的一个示例,以 XML 格式显示。

<?xml version="1.0" encoding="utf-8" ?>

<Solution xmlns="https://schemas.microsoft.com/sharepoint/"

SolutionId="{79d1a62e-3627-11db-963e-00e08161165f}"

ResetWebServer="TRUE">

    <Assemblies>

        <Assembly DeploymentTarget="GlobalAssemblyCache"

Location="Example.Sharepoint.Webparts\

Example.SharePoint.WebParts.dll">

            <SafeControls>

                <SafeControl Assembly="Example.Sharepoint.Webparts,

Version=1.0.0.0, Culture=Neutral, PublicKeyToken=63cce650e8605f5d"

Namespace="Example.Sharepoint.Webparts" TypeName="*"/>

            </SafeControls>

        </Assembly>

        <Assembly DeploymentTarget="GlobalAssemblyCache"

Location="Example.Sharepoint.Timer/Example.Sharepoint.Timer.dll"/>

    </Assemblies>

    <FeatureManifests>

        <FeatureManifest Location="Example.Sharepoint.Timer\Feature.xml"/>

        <FeatureManifest Location="Example.CustomType\Feature.xml"/>

        <FeatureManifest Location="Example.ExampleLibrary\Feature.xml"/>

        <FeatureManifest Location="Example.Columns\Feature.xml"/>

        <FeatureManifest Location="Example.Workflow.ProcessExample\Feature.xml"/>

        <FeatureManifest Location="Example.Workflow.ProvisionExample\Feature.xml"/>

    </FeatureManifests>

    <SiteDefinitionManifests>

        <SiteDefinitionManifest Location="EXAMPLE">

            <WebTempFile Location="1033\XML\WEBTEMPExample.XML"/>

        </SiteDefinitionManifest>

    </SiteDefinitionManifests>

</Solution>

此外,还可以添加 DwpFiles 元素以指定 .webpart 或 .dwp 文件,或添加 ResourceFiles 元素以指定资源文件、网站定义、应用程序资源和代码访问安全策略。

还可以选择使用 <ElementFile> 标记来标注 Feature.xml 文件。

如果解决方案包含功能,则在 Feature.xml 文件中的 <ElementManifests> 标记中,针对功能中的 ASP.NET 页(如 allitems.aspx)或母版页等所有额外文件添加 <ElementFile Location="..."/>

有关定义解决方案组成部分的解决方案清单文件的详细信息,请参阅解决方案架构(该链接可能指向英文页面) (https://go.microsoft.com/fwlink/?linkid=183466&clcid=0x804)(该链接可能指向英文页面)。

使用 Visual Studio 2010 创建和部署自定义 Web 部件解决方案包

有关演示如何使用 Visual Studio 2010 创建、自定义、调试和部署 SharePoint 列表定义以跟踪项目任务的演练示例,请参阅 MSDN Library 中的演练:部署项目任务列表定义(该链接可能指向英文页面) (https://go.microsoft.com/fwlink/?linkid=189612&clcid=0x804)(该链接可能指向英文页面)。

该演练显示了下列任务:

  • 创建包含任务的 SharePoint 列表定义项目。

  • 将列表定义添加到 SharePoint 功能中。

  • 将事件接收器添加到列表中。

  • 创建和自定义 SharePoint 包以部署所需功能。

  • 构建和部署 SharePoint 解决方案。

在此演练中构建示例项目时,Visual Studio 2010 会在开发计算机上将解决方案自动部署到运行 SharePoint Server 2010 的服务器以进行测试和调试。还可创建可在其他计算机上添加和部署的解决方案包文件。有关详细信息,请参阅如何:部署 SharePoint 解决方案 (https://go.microsoft.com/fwlink/?linkid=187004&clcid=0x804)(该链接可能指向英文页面)。您可以使用 Add-SPSolutionWindows PowerShell cmdlet 将解决方案导入其他计算机。

可以使用管理中心中的“解决方案管理”页部署解决方案包。或者,也可以使用 Install-SPSolutionWindows PowerShell cmdlet 部署解决方案包。

在此演练中,项目列表功能的范围是网站。若要激活此功能,请在网站上展开“网站操作”菜单,然后单击“网站设置”。在“网站操作”下,单击“管理网站功能”。在“功能”页上,单击功能名称旁的“激活”。