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

 

适用于: SharePoint Foundation 2010

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

本文介绍了解决方案包以及它们在 Microsoft SharePoint Foundation 2010 中部署创作和开发的自定义项的过程中所起的作用。其中包括导入和部署解决方案包的过程以及使用 Microsoft Visual Studio 2010 构建和部署解决方案包的示例。

本文内容:

  • 什么是解决方案包?

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

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

什么是解决方案包?

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

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

解决方案包是一个扩展名为 .wsp 的 CAB 文件和一个指令清单文件。建议您使用 Visual Studio 2010 Tools for SharePoint 2010 对 SharePoint 解决方案进行开发和打包。还可以使用诸如 Makecab.exe 和 SharePoint Packman 这样的工具手动创建解决方案包。

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

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

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

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

  • 新的模板和网站定义。

  • 必须在 Web 服务器级别执行的配置,例如,将自定义项部署到 Web.config 文件,以用于注册 Web 部件。您还可以使用随功能分发的功能修改这些配置。

  • 被称为网页的 Web 内容(如网页和图像)。如果您必须在断开连接的环境中部署 Web 内容,应该使用内容部署包。

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

本节内容:

  • 何时使用解决方案包

  • 部署服务器场解决方案

  • 导入解决方案包

  • 部署解决方案包

  • 关于创建解决方案包

何时使用解决方案包

部署自定义项的最佳方案是使用解决方案包,将其作为简单、安全、一致的应用程序生命周期管理流程的一部分。使用解决方案包,可以在创建网站后更方便地更改网站的功能。

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

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

您可以使用解决方案包在这些环境之间部署自定义项:

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

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

部署服务器场解决方案

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

本地部署

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

定时服务部署

在使用定时服务的部署中,部署创建计时器作业。此计时器作业是由服务器场中每个 Web 服务器上的定时服务选取的。最初,对清单和功能清单进行分析以查找程序集和 _layouts 文件,并将这些文件复制到合适的位置。功能目录内包含的所有其他文件会复制到功能目录中。将解决方案文件复制到目标计算机后,会为所有前端 Web 服务器安排配置重置;然后,重置将部署文件,重新启动 Microsoft Internet Information Services (IIS)。随后将注册功能,并将架构和定义文件提交到配置存储。

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

添加解决方案包

部署解决方案包之前,必须将其添加到 SharePoint Foundation 场的解决方案数据库中。

重要

您必须是在其上运行 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 Foundation 2010 在全局程序集缓存中部署程序集的参数。

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

    默认情况下,解决方案会立即部署,但您也可以使用 time 参数来安排部署时间。

关于创建解决方案包

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

Visual Studio 2010

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

开发人员可以在 Visual Studio 2010 中构建其 SharePoint 解决方案,并使用自动生成过程生成 .wsp 文件。也可以使用 Visual Studio 2010 集成将用于生成 .wsp 文件的 Visual Studio SharePoint 项目的源代码添加到源代码控制系统。Visual Studio 2010 可导入 .wsp 文件和创建项目,以便进一步扩展它们,并创建新的 .wsp 文件。导入 Visual Studio 2010 中的 .wsp 文件的主要源是在 SharePoint Foundation 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 Foundation 2010 解决方案中创建任何自定义项,建议使用 Visual Studio 2010 来自定义解决方案包。您还可以通过手动创建 SharePoint 解决方案包来创建这些自定义项。

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

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

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

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

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

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

手动创建解决方案文件

在大多数 SharePoint Foundation 2010 开发方案中,建议您使用 Visual Studio 2010 Tools for SharePoint 2010 部署和打包 SharePoint 解决方案。在 Visual Studio 2010 中,部署过程将 .wsp 文件复制到运行 SharePoint Foundation 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> 标记中包含功能,则在功能中为所有额外的文件添加 <ElementFile Location="..."/>,例如 ASP.NET 页(如 allitems.aspx)或母版页等。

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

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

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

此演练说明了以下任务:

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

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

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

  • 创建和自定义 SharePoint 包来部署功能。

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

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

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

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