部署开发的网站元素自定义项

本文内容:

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

  • 使用功能部署开发的网站元素

本文提供有关使用 Microsoft Office SharePoint Server 2007 部署开发的网站元素自定义项的指导,其中包括部署过程、一般注意事项以及与部署自定义代码相关的最佳方案。

开发的网站元素 是一些可提供网站功能的应用程序和文件(例如,可实现业务流程的工作流、或者使用户能够创建特殊设计网站的网站模板)。开发的网站元素部署在服务器场的 Web 服务器上,或者,在某些情况下部署在服务器场中间层中的专用应用程序服务器上。

本文的各节介绍如何使用各种方法在 Office SharePoint Server 2007 中部署开发的网站元素,其中包括介绍如何导入、导出和创建解决方案包和功能的具体过程。

本文不讨论如何部署创作的网站元素(例如网页、级联样式表和布局页)。有关部署创作的网站元素的信息,请参阅部署创作的网站元素自定义项。有关创作的网站元素和开发的网站元素之间的区别的详细信息,请参阅网站元素概述

阅读本文之前,您应熟悉设计和构建网站的相关概念。有关详细信息,请参阅关于设计和构建网站

本文中的过程基于自定义方案一文中介绍的拓扑,可能并不完全适合您的环境。

执行这些过程可能需要若干不同角色之间的紧密合作。此外,本文假设安排的部署作业将用于在拓扑的特定层之间迁移内容。

备注

若要消除潜在的同步问题,通常必须始终在部署创作的网站元素之前部署开发的网站元素。有关创作的网站元素和开发的网站元素的详细信息,请参阅网站元素概述。另请注意,还必须在目标服务器上安装源服务器中正使用的任何语言包,否则内容部署将失败。

下表汇总了本文中介绍的部署方法。

方法 说明

解决方案包

解决方案包是一种分发包,可将您的 Office SharePoint Server 2007 和 Windows SharePoint Services 3.0 自定义开发工作成果分发到服务器场中的 Web 服务器或应用程序服务器。

使用解决方案包,您可以:

  • 在连接环境和断开连接的环境中部署开发的网站元素。

  • 以解决方案包的形式同时部署项目和开发的网站元素。

不能使用解决方案包来部署不属于项目的创作的网站元素。

功能

功能是一组部署到 Web 服务器的、打包的 XML 文件。功能可与网站定义和解决方案捆绑在一起,也可以在 Office SharePoint Server 网站中逐个激活。

使用功能,您可以:

  • 在连接环境和断开连接的环境中部署开发的网站元素。

  • 在管理中心网站中(或使用 Stsadm 命令行工具)激活和停用自定义项。

  • 控制部署范围。

  • 将功能及其他功能、开发的网站元素和项目包括在一个解决方案包中。

不能使用功能来部署创作的网站元素。

以下各节详细介绍了上述每种部署方法。

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

本节内容:

  • 什么是解决方案包?

  • 何时使用解决方案包

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

  • 创建解决方案包

  • 使用 Stsadm 命令行工具导入解决方案包

  • 使用 Stsadm 命令行工具部署解决方案包

什么是解决方案包?

解决方案包 是一个分发包,可将您的 Office SharePoint Server 2007 和 Windows SharePoint Services 3.0 自定义开发工作成果分发到服务器场中的 Web 服务器或应用程序服务器。解决方案包是一个扩展名为 .wsp 的 CAB 文件,它包含一个指令清单文件。解决方案包可以通过诸如 Makecab.exe 这样的工具手动创建,也可以使用解决方案生成器来创建。解决方案生成器是 Windows SharePoint Services 3.0 工具:Visual Studio 2005 Extensions(该链接可能指向英文页面)(https://go.microsoft.com/fwlink/?linkid=107267&clcid=0x804) 中包含的一个独立应用程序。

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

  • 封装了构成解决方案的代码的 .NET Framework 程序集。

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

  • 新模板及网站、列表、库、字段、内容类型和其他项的定义。这些定义的格式均为基于 CAML 的 XML 文件。

  • 功能,使您能够激活和停用网站中的代码。

  • 必须在 Web 服务器级别执行的配置,例如,用于注册 Web 部件的 Web.config 文件。

有关详细信息,请参阅解决方案包组件

何时使用解决方案包

您可以使用解决方案包来分发开发的网站元素和项目(如部署创作的网站元素自定义项中所述),还可以使用解决方包在断开连接的环境中部署开发的网站元素,或者将开发的网站元素保存到软件配置管理系统。

如果存在以下一个或多个因素,您就可以使用解决方案包来部署开发的网站元素:

  • 断开连接的环境   如果服务器场断开连接,则应创建一个解决方案包以便异步传输到集成服务器场。

  • 软件配置管理环境   您可以将开发工作合并到解决方案中,以便将其分发到软件配置管理系统。

  • 包括功能及其他开发的网站元素   您可以在解决方案包中包括功能和其他自定义项。如果某些自定义项被打包为功能,而另一些项没有被打包,则可以使用解决方案包作为标准部署方法。

  • 依次传递项目和开发的网站元素   如果要在一个部署包中同时部署项目和开发的网站元素,则可以使用解决方案包。

  • 脚本化部署   如果要编写脚本以简化开发网站元素的部署过程,则可以使用解决方案包。

自定义方案文章中的部署图所示,您可以使用解决方案包在开发人员工作站和集成服务器场或软件配置管理系统之间,在集成服务器场和创作客户端工作站及试验或生产服务器场之间部署开发的网站元素。

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

您可以在管理中心网站部署导入的解决方案。如果已使用 Stsadm -Addsolution 操作将某个解决方案导入解决方案数据库(如下文的使用 Stsadm 命令行工具导入解决方案包部分中所述),则必须将该解决方案部署到网站,然后才能对其进行访问。

备注

您不能使用管理中心中的“解决方案管理”页导入解决方案。

下面的过程演示如何将导入的解决方案部署到服务器场中的网站。

在管理中心网站中部署解决方案

  1. 在管理中心网站的顶部链接栏上,单击“操作”。

  2. 在“操作”页上的“全局配置”部分中,单击“解决方案管理”。

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

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

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

    • 立即

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

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

  7. 单击“确定”。

创建解决方案包

本节介绍如何创建包含开发的网站元素和项目的解决方案包。可采用若干种不同的方法创建来解决方案包。下表汇总了本节中介绍的方法。

方法 说明

手动

您可以使用 Makecab.exe 工具手动创建解决方案包。由于 Office SharePoint Server 2007 不包括用于创建解决方案包的工具,因此这是默认方法。

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

SharePoint 解决方案生成器

SharePoint 解决方案生成器是一个独立的应用程序,它可以将某些类型的 Office SharePoint Server 2007 或 Windows SharePoint Services 3.0 网站转换为 Visual Studio 2005 网站定义项目。如果使用 Visual Studio 2005 来自定义网站元素,则此方法可能会很有用。

可以从 Windows SharePoint Services 3.0 工具:Visual Studio 2005 Extensions(该链接可能指向英文页面)(https://go.microsoft.com/fwlink/?linkid=107267&clcid=0x804) 下载 SharePoint 解决方案生成器。

WSPBuilder

WSPBuilder 是一个开放源代码的命令行工具,您可以使用此工具来简化解决方案包的创建过程。如果需要定期创建解决方案包并且您可以不受约束地在所处环境中使用开放源代码的工具,则此方法会很有用。

可从以下位置下载 WSPBuilder 工具:Codeplex(该链接可能指向英文页面)(https://go.microsoft.com/fwlink/?linkid=106471&clcid=0x804)。

手动创建解决方案包

Office SharePoint Server 2007 解决方案的开发人员通常会在需要执行以下任一操作时手动创建 SharePoint 解决方案包:

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

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

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

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

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

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

若要手动创建解决方案文件,可执行下面的基本步骤:

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

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

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

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

以下过程详细介绍了后续基本步骤。

备注

执行此过程需要 Makecab.exe 工具,该工具可从 Microsoft Cabinet 软件开发工具包(https://go.microsoft.com/fwlink/?linkid=107292&clcid=0x804) 处下载。

使用 Makecab.exe 手动创建解决方案包

  1. 创建解决方案 manifest.xml 文件。

    解决方案指令清单(通常名为 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 元素以指定资源文件、网站定义、应用程序资源和代码访问安全策略。

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

    在 Feature.xml 文件的 <ElementManifests> 标记中,为功能中的所有额外文件添加 <ElementFile Location="..."/>,例如 Active Server Page Extension (ASPX) 页(如 allitems.aspx)或母版页等等。

    备注

    仅在解决方案包含功能时,才有必要执行此步骤。

  3. 创建解决方案包(.wsp 文件)。

    由于解决方案文件实际上是一个 CAB 文件,因此可使用 Makecab.exe 工具来创建解决方案包。Makecab.exe 工具采用指向 .ddf 文件的指针,该文件描述了 CAB 文件的结构。.ddf 文件的格式类似于 .inf 文件的格式,即声明一个标准头,然后按照文件集在磁盘上的位置枚举该组文件(每行一个文件),并按照该组文件在 CAB 文件中的位置分隔它们。例如:

    ; .OPTION EXPLICIT    

    ; Generate errors

    .Set CabinetNameTemplate=MySolutionFile.wsp

         .set DiskDirectoryTemplate=CDROM

    ; All cabinets go in a single directory

    .Set CompressionType=MSZIP

    ;** All files are compressed in cabinet files

    .Set UniqueFiles="ON"

    .Set Cabinet=on

    .Set DiskDirectory1=Package build\manifest.xml manifest.xml build\

    MySolutionFile\Feature.xml MySolutionFile\Feature.xml ...

演练:生成和部署自定义 Web 部件解决方案包

本节提供有关如何构建和部署包含自定义 Web 部件的解决方案包的示例。该演练需要使用 Visual Studio 2005 和 Makecab.exe 工具。

Office SharePoint Server 2007 使开发人员可以在安装、激活、停用或卸载功能时执行自定义代码。例如,依赖于特定任务列表的 Web 部件。在激活 Web 部件功能时,自定义代码可以检查该任务列表是否为网站内列表的一部分。如果不是,则该代码将创建列表,然后在停用该功能时移除该列表。该自定义代码被打包为一个称为“功能接收器程序集”的 .NET Framework 程序集。

该演练假定您已经创建了一个 Web 部件项目。在安装、激活、停用或卸载该 Web 部件功能时,Office SharePoint Server 会引发异步事件。您可以创建继承自 Microsoft.SharePoint.SPFeatureReceiver 抽象类的 .NET Framework 类,从而在自定义 .NET Framework 程序集中处理这些事件。

演练:生成和部署自定义 Web 部件解决方案包

  1. 使用 C# 创建以下 .NET 类:

    using System;
    using System.Diagnostics;
    using System.Collections.Generic;
    using System.Text;
    using Microsoft.SharePoint;
    
    namespace MSDN.Samples
    {
        public class MSDNTaskListEventHandler: SPFeatureReceiver
        {
            public override void 
    FeatureActivated(SPFeatureReceiverProperties properties)
            {
                SPSite sitecollection = 
    (SPSite)properties.Feature.Parent;
                SPWeb web = sitecollection.RootWeb;
                try
                {
                    // -- Check if list exists.
                    SPList list = web.Lists["MSDN Tasks"]; 
                }
                catch 
                {
                    // -- If not, create the list.
                    web.Lists.Add("MSDN Tasks", "A custom list", SPListTemplateType.Tasks);
                }
            }
    
            public override void 
    FeatureDeactivating(SPFeatureReceiverProperties properties)
            {
                SPSite sitecollection = (SPSite)properties.Feature.Parent;
                SPWeb web = sitecollection.RootWeb;
                try
                {
                    // -- Check if list is there, and if so, delete it.
                    SPList list = web.Lists["MSDN Tasks"];
                    web.Lists.Delete(list.ID);
                }
                catch (Exception ex)
                {
                }
            }
    
            public override void 
    FeatureInstalled(SPFeatureReceiverProperties properties)
            {
            }
    
            public override void 
    FeatureUninstalling(SPFeatureReceiverProperties properties)
            {
            }
        }
    }
    

    编码工作会生成两个程序集。一个程序集包含提供 Web 部件的代码,另一个程序集包含之前的代码。截止到本文发布时,Visual Studio Extensions for Windows SharePoint Services 3.0 尚不允许您将事件处理程序与 Web 部件功能定义文件相关联。此外,必须将 Web 部件程序集部署在专用的应用程序文件夹,而不能部署在全局程序集缓存中。因此,您必须手动创建解决方案包。

    备注

    在以下步骤中,代表解决方案组成部分的不同文件的组织方式可以根据您自己的喜好进行调整,并且可以是 Visual Studio 2005 解决方案的一部分。

  2. 创建包含两个子文件夹的文件夹,以收集所有解决方案组件。第一个子文件夹存储程序集(在本文中称为“Assemblies”),第二个子文件夹存储用于定义功能的不同 XML 文件(在本文中称为“Features”)。将 Web 部件程序集和事件处理程序程序集复制到 Assemblies 文件夹。

  3. 在 Features 文件夹下,为必须包含在 SharePoint 解决方案中的每个功能分别创建一个子文件夹。此演练中只有一个功能。假定该功能名为 MSDNTaskCreator;Features 文件夹包含一个同名的子文件夹。在此文件夹的根位置处,添加包含以下 XML 的 Feature.xml 文件。

    <Feature  Title="MSDNTaskCreator" 
              Id="55312295-a323-4333-b875-1bbe8ef7fd04" 
              Description="Small Web Part creating a custom task item" 
              Version="1.0.0.0" Scope="Site" Hidden="FALSE" 
              ReceiverAssembly="MSDNFeatureEventhandlers, 
    Version=1.0.0.0, Culture=neutral, PublicKeyToken=5e5a470a5445a8f1" 
              ReceiverClass="MSDN.Samples.MSDNTaskListEventHandler"
              DefaultResourceFile="core" 
    xmlns="https://schemas.microsoft.com/sharepoint/">
      <ElementManifests>
        <ElementManifest Location="elementManifest.xml" />
        <ElementFile Location="MSDNTaskCreator.webpart" />
      </ElementManifests>
    </Feature>
    

    该 XML 与在 Visual Studio Extensions for Windows SharePoint Services 3.0 中生成的 XML 有所不同,因为它会向 Feature.xml 文件中添加两个附加属性:

    • ReceiverAssembly 属性包含 .NET Framework 程序集(包含事件处理程序代码)的完整强名称。

    • ReceiverClass 属性存储该程序集中所含类的全名。

  4. 在根文件夹中创建一个指令清单文件。该文件与由 Visual Studio Extensions for Windows SharePoint Services 3.0 创建的文件不同。下面是该文件的内容。

    <Solution SolutionId="d63d0395-96a4-449e-83ce-5f7239bbd3ad"

    xmlns="https://schemas.microsoft.com/sharepoint/" >

      <FeatureManifests>

        <FeatureManifest Location="MSDNTaskCreator\Feature.xml" />

      </FeatureManifests>

      <Assemblies>

        <Assembly Location="MSDNTaskCreator.dll"

    DeploymentTarget="WebApplication" >

          <SafeControls>

            <SafeControl Assembly="MSDNTaskCreator, Version=1.0.0.0,

    Culture=neutral, PublicKeyToken=9f4da00116c38ec5"

    Namespace="MSDN.Samples" TypeName="MSDNTaskCreator" Safe="True" />

          </SafeControls>

        </Assembly>

            <Assembly Location="MSDNFeatureEventHandlers.dll"

    DeploymentTarget="GlobalAssemblyCache" />

      </Assemblies>

    </Solution>

    请注意,功能的名称不再包含 GUID。第一个程序集元素具有一个名为 DeploymentTarget 的属性,值为 WebApplication(而不是 GlobalAssemblyCache)。具有 XML 程序集定义的第二个程序集元素包含要部署到全局程序集缓存中的事件处理程序代码。

  5. 现在,我们可以创建 .ddf 文件(在本例中名为 .wsp_structure.ddf)。直接在 DeploymentFiles 文件夹下创建此文件。首先,添加以下标头信息。

    ;

    ; *** .ddf file for generating SharePoint solution.

    ;

    .OPTION EXPLICIT ; Generate errors

    .Set CabinetNameTemplate=MSDNTaskCreatorWebPart.wsp

    .set DiskDirectoryTemplate=CDROM ; All cabinets go in a single

    directory

    .Set CompressionType=MSZIP;** All files are compressed in cabinet

    files

    .Set UniqueFiles="ON"

    .Set Cabinet=on

    .Set DiskDirectory1=Package

    标头包含两部分:

    • CabinetNameTemplate 设置为 SharePoint 解决方案文件的名称 (MSDNTaskCreatorWebPart.wsp)。

    • DiskDirectory1 设置为 Package。它是生成的 .wsp 文件所在的目录。

    .ddf 文件的第二部分定义解决方案包的结构。

    ; *** the manifest file

    manifest.xml manifest.xml

    ; *** the feature files

    Features\MSDNTaskCreator\Feature.xml MSDNTaskCreator\Feature.xml

    Features\MSDNTaskCreator\elementManifest.xml MSDNTaskCreator\elementManifest.xml

    Features\MSDNTaskCreator\MSDNTaskCreator.webpart

    MSDNTaskCreator\MSDNTaskCreator.webpart

    ; *** the assemblies

    Assemblies\MSDNTaskCreator.dll MSDNTaskCreator.dll

    Assemblies\MSDNFeatureEventhandlers.dll MSDNFeatureEventhandlers.dll

    .ddf 文件是 Makecab.exe(如上文所述,安装 Microsoft Cabinet SDK 可获得该工具)的输入文件。还可以在智能设备 SDK(默认情况下位于 \Program Files\Microsoft Visual Studio 8\SmartDevices\SDK\SDKTools)中找到 Makecab.exe。

  6. 为了方便打包和部署,请使用以下内容创建批处理文件。

    set MakeCabTool=c:\Program Files\Microsoft Visual Studio 8\

    SmartDevices\SDK\SDKTools\Makecab.exe

    set SPAdminTool=%CommonProgramFiles%\Microsoft Shared\

    web server extensions\12\BIN\stsadm.exe

    "%MakeCabTool%" /f wsp_structure.ddf

    "%SPAdminTool%" -o addsolution -filename package\

    MSDNTaskCreatorWebPart.wsp

    "%SPAdminTool%" -o deploysolution -name MSDNTaskCreatorWebPart.wsp

    -immediate -allowGACDeployment -url <URL name>

    前两行是 Makecab 和 Stsadm 命令行工具的路径设置。接下来是创建解决方案包的行。

    Makecab.exe /f wsp_structure.ddf
    

    执行结束后,MSDNTaskCreatorWebPart.wsp 会出现在 Package 文件夹中。下一行通过执行以下命令将 MSDNTaskCreatorWebPart.wsp 添加到您服务器场的解决方案存储中:

    stsadm.exe -o addsolution -filename 
    Package\MSDNTaskCreatorWebPart.wsp
    

    批处理文件中的最后一行用于将解决方案部署到其中一个网站集。

  7. 您可以使用管理中心“操作”选项卡上的“解决方案管理”链接来部署解决方案包。或者,在命令提示符处运行以下命令:

    cd %COMMONPROGRAMFILES%\Microsoft shared\Web server extensions\12\Bin

    stsadm -o deploysolution -name MSDNTaskCreatorWebPart.wsp -local -allowGACDeployment -url <URL name>

    Web 部件功能现已安装,但尚未激活。

  8. 若要激活该功能,请打开“网站集功能”页,然后单击功能名称旁边的“激活”按钮。由于存在出现 FeatureActivated 事件时会运行的代码,因此会创建 MSDN 任务列表。停用此功能会从网站集的根网站中移除此任务列表。

使用 SharePoint 解决方案生成器创建解决方案包

SharePoint 解决方案生成器是一个独立的应用程序,它可以将某些类型的 Office SharePoint Server 2007 或 Windows SharePoint Services 3.0 网站转换为 Visual Studio 2005 网站定义项目。SharePoint 解决方案生成器不支持的内容包括:

  • 某些网站和列表模板,例如 Wiki 网站、发布门户和协作门户

  • 查找字段和自定义字段类型

  • 某些网站设置和列表设置

有关 SharePoint 解决方案生成器的详细信息,请参阅 Windows SharePoint Services 3.0 工具:Visual Studio 2005 Extensions(该链接可能指向英文页面)(https://go.microsoft.com/fwlink/?linkid=107267&clcid=0x804)。

通过使用 SharePoint 解决方案生成器用户界面,您可以将自定义网站编译为 SharePoint 解决方案,以便部署到其他 SharePoint 场。在将解决方案导入服务器场时,有些自定义项可能丢失,其中包括:

  • 查找列从原来包含该列的所有列表中消失。

  • 对网站的“快速启动”所做的自定义设置丢失。

  • 在页面上配置的 Web 部件丢失。

  • 自定义列表项事件接收器不再挂接到列表。

有关详细信息,请参阅工具和流程概述

在设置网站时执行自定义操作

解决方案文件提供了一种在设置网站的同时执行自定义操作的方法。在生成的解决方案文件中,名为“Site Provisioning Handler”的文件夹包含一个名为 SiteProvisioning.cs 的类。在该类中,可通过 OnActivated 方法添加自定义代码。在使用网站定义设置新网站时会调用该方法。该方法接受一个类型为 SPFeatureReceiverProperties 命名属性的参数。使用该参数并借助以下代码,您可以找到 SPSite 和 SPWeb 对象。

SPWeb web;
SPSite site;
if (properties.Feature.Parent is SPWeb)
{
    web = properties.Feature.Parent as SPWeb;
    site = web.Site;
}
Else
{
    site = properties.Feature.Parent as SPSite;
    web = site.RootWeb;
}

使用 WSPBuilder 创建解决方案包

Internet 上公开提供有多个源代码开放的、由社区创建的 SharePoint 产品和技术工具。尽管 Microsoft 不控制、审查、修改、认可或分发这些网站上的第三方项目,但其中有些工具还是可以提供执行常见操作的有用方法。

WSPBuilder 是一个命令行工具,可用于自动完成创建解决方案包的过程。WSPBuilder 将以递归方式遍历文件夹,并根据文件夹结构内的文件创建 SharePoint 解决方案包(包括 manifest.xml 文件和 .wsp 文件)。

可从以下位置下载 WSPBuilder 工具:Codeplex(该链接可能指向英文页面)(https://go.microsoft.com/fwlink/?linkid=106471&clcid=0x804)。

使用 Stsadm 命令行工具导入解决方案包

可使用以下过程将解决方案文件导入 Office SharePoint Server 服务器场的解决方案数据库。

Important重要说明:

您必须是运行 Stsadm 命令行工具的计算机上 Administrators 组的成员。

使用 Stsadm 命令行工具导入解决方案包

  1. 在服务器场中要导入解决方案的服务器上,在安装 SharePoint 产品和技术的驱动器上,通过在命令提示符处键入以下命令,转到存储 Stsadm 命令行工具的目录:

    cd %COMMONPROGRAMFILES%\Microsoft shared\Web server extensions\12\Bin

  2. 键入以下命令:

    stsadm -addsolution -filename <solution name>

解决方案即被添加到服务器场的解决方案数据库中。若要使用该解决方案,请按照本文下一节中的步骤操作。有关详细信息,请参阅 Addsolution:Stsadm 操作 (Office SharePoint Server)

使用 Stsadm 命令行工具部署解决方案包

您可以使用 deploysolution 操作通过命令提示符部署解决方案。

将解决方案包部署到单个网站集

  1. 在服务器场中要部署导入解决方案包的服务器上,在安装 SharePoint 产品和技术的驱动器上,键入以下命令,转到存储 Stsadm 命令行工具的目录:

    cd %COMMONPROGRAMFILES%\Microsoft shared\Web server extensions\12\Bin

  2. 键入以下命令:

    stsadm –o deploysolution –name <solution name > –url <URL name>

    其中,file name 是解决方案的名称,URL name 是要将导入的解决方案部署到其中的 Web 应用程序的 URL。

除了将目标设定为一个网站集外,您还可以使用 allcontenturls 参数,通过以下过程将解决方案部署到服务器场中的所有网站集。

将解决方案包部署到所有网站集

  1. 在服务器场中要部署导入解决方案包的服务器上,在安装 SharePoint 产品和技术的驱动器上,键入以下命令,转到存储 Stsadm 命令行工具的目录:

    cd %COMMONPROGRAMFILES%\Microsoft shared\Web server extensions\12\Bin

  2. 键入以下命令:

    stsadm –o deploysolution –name <solution name> –allcontenturls [-time] <time to deploy> [-allowgacdeployment] [-allowcaspolicies]

    其中,solution name 是解决方案的名称。

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

allowgacdeployment 和 allowcaspolicies 参数非常重要。通过使用 allowgacdeployment 参数,Office SharePoint Server 2007 可以在全局程序集缓存中部署程序集。通过使用 allowcaspolicies 参数,您可以创建自定义代码启用安全性 (CAS) 策略文件,并在目标网站集的 Web.config 文件中激活该文件。

有关详细信息,请参阅 Deploysolution:Stsadm 操作 (Office SharePoint Server)

使用功能部署开发的网站元素

本节内容:

  • 什么是功能?

  • 何时使用功能

  • 创建功能包

  • 手动部署功能

  • 使用 Stsadm 安装和激活功能

有关功能的详细信息,请参阅使用功能(https://go.microsoft.com/fwlink/?linkid=105337&clcid=0x804)。

什么是功能?

功能 是用于 Office SharePoint Server 2007 和 Windows SharePoint Services 3.0 的各种已定义扩展的容器,由一组将部署到 Web 服务器的 XML 文件组成。您可以将功能作为网站定义或解决方案包的一部分部署,也可以在 Office SharePoint Server 网站中单独激活某个功能。

功能降低了对网站进行简单自定义的复杂性,同时在将升级应用于部署时,功能相当稳固。通过使用功能,您无需为了更改简单的功能而复制大量代码,因此可以减少前端 Web 服务器中可能出现的版本控制和不一致问题。

通过功能可以更加轻松地激活或停用部署过程中所应用的功能,并且管理员仅需在用户界面中打开或关闭特定功能,即可方便地转换网站的模板或定义。

功能可提供以下内容:

  • 范围设定语义,使您能够指定自定义代码运行的范围。

  • 能够指定在部署功能时是否在目标服务器场中安装该功能

  • 能够在给定范围内激活或停用功能而不安装或卸载代码

  • 能够在其范围中将功能所需的数据存储在范围属性文件夹中。

  • 作为用于分布式部署 Windows SharePoint Services 3.0 和 Office SharePoint Server 2007 解决方案的统一框架的基础。

Microsoft Office SharePoint Portal Server 2003 的大型网站定义文件中包含的项目是 Windows SharePoint Services 3.0 功能中单独的元素。元素是功能中的原子单元。Feature 元素用于在 Feature.xml 文件中定义功能并指定支持功能的程序集、文件、依赖项或属性的位置。功能包括 Feature.xml 文件和用于描述各个元素的任意数量的文件。其他架构中的另一个功能元素用于在 Onet.xml 文件中指定是否在网站定义内激活功能。

Feature.xml 文件通常指向一个或多个 XML 文件,这些 XML 文件的顶级 <Elements> 标记包含支持功能的元素的定义。Windows SharePoint Services 3.0 中的元素通常对应于早期版本的 Onet.xml 或 Schema.xml 文件中离散的节点。元素包括多种类型,例如自定义菜单项或事件处理程序。

例如,功能可提供包含下列元素的“我的收藏项目”功能:

  • 自定义列表,用于存储每个用户的收藏项目列表,该自定义列表是在启用功能时作为每个工作区的一个隐藏列表而创建的。

  • 附加到所有列表中的自定义菜单项(称为“添加到收藏夹”),可将项目添加到收藏夹列表。

  • Web 部件,可实现用法和链接跟踪以在顶端显示用户的前 10 个收藏内容。

功能的每个元素本身可能不是很有用,但如果在网站上启用功能,则所有这些元素会组合成一个完整的解决方案。

有关详细信息,请参阅 Windows SharePoint Services 3.0 SDK 中的以下资源:

何时使用功能

如果存在以下一个或多个因素,则可以使用功能来部署开发的网站元素:

  • 需要激活和停用   在功能中部署网站元素自定义项时,可以使用 Stsadm 命令行工具操作或对象模型来安装、激活和停用功能。您还可以通过用户界面激活和停用功能。

  • 范围的灵活性   您可以激活单个范围的功能,例如服务器场、Web 应用程序、网站集和网站。

  • 分布式部署的简易性   很容易将功能部署到多个服务器场。

  • 通过功能对象模型进行深入控制   通过功能对象模型,您可以指定某一给定范围内已安装功能的列表,并控制是否在服务器场和网站级别启用功能。

自定义方案一文中的部署示意图所示,您可以使用功能在开发人员工作站和集成服务器场之间、集成服务器场和创作客户端工作站之间,以及试验服务器场和生产服务器场之间部署开发的网站元素自定义项。

创建功能包

当您在 Office SharePoint Server 2007 中创建自定义网页时,ASPX 页只能属于运行 Office SharePoint Server 2007 的服务器的根网站集。若要在不是根网站集的网站集下创建页面,您必须将自定义网页部署为 SharePoint 功能。SharePoint 功能需要两个简单的 XML 文件,并使用 Stsadm 命令行工具进行部署,通过使用批处理文件可以自动完成该过程。

备注

若要运行 Stsadm 命令行工具,您必须转到存储 Stsadm 的目录。为此,请在安装 SharePoint 产品和技术的驱动器上,运行下面的命令:cd %COMMONPROGRAMFILES%\Microsoft shared\Web server extensions\12\Bin

创建自定义功能

  1. 创建一个 Feature.xml 文件。下面是一个示例 Feature.xml 文件,它是为功能提供唯一 ID 和指向 Module.xml 文件所必须的文件。

    <?xml version="1.0"?>
    <Feature Id="8C4DD0CB-5A94-44da-9B7F-E9ED49C2B2DC" Title=
    "Custom Web page"
    Description="This simple example feature adds an ASPX page 
    with a hosted XmlFormView control" 
    Version="1.0.0.0" Scope="Web"
    xmlns="https://schemas.microsoft.com/sharepoint/">
    <ElementManifests>
        <ElementManifest Location="Module.xml"/>
    </ElementManifests>
    </Feature>
    
  2. 创建一个 Module.xml 文件。下面是一个示例 Module.xml 文件,其中包含作为解决方案一部分的页面的相关信息。

    <?xml version="1.0"?>
    <Elements xmlns="https://schemas.microsoft.com/sharepoint/">
        <module name="file" url="" path="">
            <file url="XmlFormViewPage.aspx" type="ghostable"> </file>
        </module>
    </Elements>
    
  3. 将文件的 url 值更改为 ASPX 页的名称,然后如使用 Stsadm 命令行工具安装和激活功能中所述运行命令行操作。您可以创建一个批处理文件并按顺序执行这些命令行操作。

  4. 执行下列操作:

    1. 在服务器计算机上的功能文件夹(通常为 %COMMONPROGRAMFILES%\Microsoft shared\Web server extensions\12\TEMPLATE\FEATURES)下创建一个文件夹。

    2. 将自定义 ASPX 页添加到此文件夹。

    3. 根据上一部分中提供的示例创建 Feature.xml 和 Module.xml 文件,并将这两个文件添加到同一位置。

若要在部署功能后安装和激活该功能,请参阅下文的使用 Stsadm 命令行工具安装和激活功能。

手动部署功能

若要实现功能,您需要在功能安装目录(本例中为:本地驱动器:\%COMMONPROGRAMFILES%\Microsoft shared\Web server extensions\12\TEMPLATE\FEATURES)中添加一个包含功能定义的子文件夹。该功能子文件夹包含 Feature.xml 文件,它用于定义功能的基本属性并列出绑定到功能的元素(例如,包含元素清单的 XML 文件和任何其他支持文件)。功能文件夹可能仅包含 Feature.xml 文件,也可能包含 Feature.xml 文件和任意数量的支持元素文件(包括 XML 文件以及 .aspx, .htm, .xsn, .resx, .dll 及其他文件类型)。

备注

通过右键单击文件夹,指向“新建”,然后单击“文件夹”使用 Windows 资源管理器在功能目录下创建文件夹时,新创建的文件夹不具有继承的权限。在该文件夹中部署功能时,将无法访问某些 Windows SharePoint Services 3.0 页面(例如网站设置或列表视图的页面)。可以通过使用 md 命令在命令提示符下新建文件夹来解决此问题。

Feature 文件夹创建之后,您可以通过 Stsadm 命令行操作或通过对象模型来安装和激活功能。您还可以在“网站集功能”页上或要激活该功能的网站集或网站的“网站功能”页上激活该功能。安装功能可使整个服务器场了解其定义和元素,激活功能可在特定范围内使用该功能。

使用 Stsadm 命令行工具安装和激活功能

在 12\Template\Features 目录中安装功能,其中每个功能位于其自己的子目录中。位于此文件夹的根目录下的 Feature.xml 文件定义了功能的内容。

备注

若要运行 Stsadm 命令行工具,您必须转到存储该工具的目录。为此,请键入以下命令:cd %COMMONPROGRAMFILES%\Microsoft shared\Web server extensions\12\Bin

必须先安装各个功能,然后才能使用这些功能。为此,请在命令提示符下运行以下命令:

stsadm -o installfeature-filename <relative path> -name <feature folder> [-force]

有关详细信息,请参阅 Installfeature:Stsadm 操作 (Office SharePoint Server)

除了需要安装外,您还必须将功能激活,然后才能使用功能(除非功能是服务器场范围内的,在这种情况下将自动激活功能)。

若要激活功能,请运行以下命令:

stsadm -o activatefeature -filename <relative path> -name <feature folder> -id <feature ID> [-url] <URL name> [-force]

有关详细信息,请参阅 Activatefeature;Stsadm 操作 (Office SharePoint Server)

若要卸载功能以便其定义在服务器场中不再可用,可以使用 uninstall 操作。有关详细信息,请参阅 Uninstallfeature:Stsadm 操作 (Office SharePoint Server)

备注

必须先停用功能,然后才能将其卸载,除非此功能是 Web 应用程序或服务器场范围内的。

在卸载功能之后,请重置 Internet Information Services (IIS),以便更改能够生效。

若要停用功能,以便它在其最初分配的范围内处于非活动状态而不卸载该功能,可以使用 deactivate 操作。有关详细信息,请参阅 Deactivatefeature:Stsadm 操作 (Office SharePoint Server)

下载书籍

本主题包含在以下可下载书籍内,以方便您阅读和打印:

有关可下载书籍的完整列表,请参阅 Office SharePoint Server 2007 的可下载书籍

另请参见

概念

部署自定义项
部署创作的网站元素自定义项
解决方案包组件