36、SharePoint 解决方案的打包与部署全解析

SharePoint 解决方案的打包与部署全解析

1. 功能停用与解决方案打包概述

在 SharePoint 中,停用功能的命令与其他操作命令类似。当你只需安装单个 SharePoint 功能时,手动安装、卸载、激活和停用功能的过程并不复杂。但如果需要一次性安装多个功能,手动操作就会变得繁琐。这时,SharePoint 解决方案打包就派上用场了。

SharePoint 解决方案是一个或多个 SharePoint 功能的集合。它以具有 .WSP 扩展名的 cabinet 文件(.CAB)形式存在,也被称为解决方案包或包文件。解决方案的核心是解决方案清单文件 Manifest.xml,它是一个 XML 文件,用于指示解决方案中包含的内容以及部署位置。此外,它还有一个唯一标识解决方案的 SolutionId。

以下是一个用于部署三个功能的示例解决方案清单文件:

<?xml version="1.0" encoding="utf-8"?>
<Solution xmlns="http://schemas.microsoft.com/sharepoint/" SolutionId="your-solution-guid">
    <FeatureManifests>
        <FeatureManifest Location="Feature1\Feature.xml" />
        <FeatureManifest Location="Feature2\Feature.xml" />
        <FeatureManifest Location="Feature3\Feature.xml" />
    </FeatureManifests>
</Solution>

2. 解决方案清单文件的 XML 元素

解决方案清单文件可以包含多种 XML 元素,每个元素都有特定的用途。以下是一些常见元素及其说明:
| 元素 | 描述 | 示例 |
| — | — | — |
| ActivationDependencies | 用于指定当前包激活所依赖的包的 ID | <ActivationDependencies><Dependency FeatureId="your-feature-guid" /></ActivationDependencies> |
| ApplicationResourceFiles | 指定解决方案中需要包含的应用程序资源文件 | <ApplicationResourceFiles><ApplicationResourceFile Location="Resources\MyResource.xml" /></ApplicationResourceFiles> |
| Assemblies | 指定解决方案中应包含的程序集 | <Assemblies><Assembly Location="Bin\MyAssembly.dll" /></Assemblies> |
| SafeControls | 指定应添加到安全控制列表的程序集中的安全控件,通常用于 Web 部件 | <SafeControls><SafeControl Assembly="MyAssembly" Namespace="MyNamespace" TypeName="*" Safe="True" /></SafeControls> |
| ClassResources | 指定程序集的类资源 | <ClassResources><ClassResource Location="Resources\MyClassResource.xml" /></ClassResources> |
| CodeAccessSecurity | 定义特定程序集的信任级别和自定义策略文件 | <CodeAccessSecurity><PolicyItem><PermissionSet class="NamedPermissionSet" version="1" Name="FullTrust" /></PolicyItem></CodeAccessSecurity> |
| DwpFiles | 允许将 Web 部件部署到 SharePoint | <DwpFiles><DwpFile Location="WebParts\MyWebPart.dwp" /></DwpFiles> |
| FeatureManifests | 指向要随此解决方案部署的功能清单 | <FeatureManifests><FeatureManifest Location="Feature1\Feature.xml" /></FeatureManifests> |
| Resources | 定义解决方案中要包含的资源 | <Resources><Resource Location="Resources\MyResource.xml" /></Resources> |
| RootFiles | 用于将某些文件复制到 SharePoint 配置单元文件夹结构中的文件夹 | <RootFiles><RootFile Location="RootFiles\MyRootFile.xml" /></RootFiles> |
| SiteDefinitionManifests | 允许在解决方案中包含站点定义 | <SiteDefinitionManifests><SiteDefinitionManifest Location="SiteDefinitions\MySiteDefinition.xml" /></SiteDefinitionManifests> |
| WebTempFile | 与解决方案中包含的站点定义关联的 Web 模板规范文件 | <WebTempFile Location="WebTemp\MyWebTemp.xml" /> |
| TemplateFiles | 类似于 RootFiles 元素,可用于将某些文件复制到 TEMPLATE 文件夹 | <TemplateFiles><TemplateFile Location="TemplateFiles\MyTemplateFile.xml" /></TemplateFiles> |

3. 手动创建和部署 SharePoint 解决方案

3.1 准备解决方案文件夹结构

创建 SharePoint 解决方案包,首先要准备解决方案文件夹结构,并将所需文件复制到相应文件夹。以包含两个功能的解决方案为例,文件夹结构如下:

Root Folder
├── Manifest.xml
├── Feature1
│   ├── Feature.xml
│   ├── Element1
│   │   └── Elements.xml
│   └── Element2
│       └── Elements.xml
└── Feature2
    ├── Feature.xml
    └── Element3
        └── Elements.xml

对应的 Manifest.xml 文件如下:

<?xml version="1.0" encoding="utf-8"?>
<Solution xmlns="http://schemas.microsoft.com/sharepoint/" SolutionId="your-solution-guid">
    <FeatureManifests>
        <FeatureManifest Location="Feature1\Feature.xml" />
        <FeatureManifest Location="Feature2\Feature.xml" />
    </FeatureManifests>
</Solution>

3.2 创建 Diamond Directive 文件(.DDF)

接下来,需要创建一个 Diamond Directive 文件(.DDF)来定义包的文件夹结构。以下是一个示例:

.OPTION EXPLICIT
.Set CabinetNameTemplate=MySolution.wsp
.Set DiskDirectoryTemplate=Package
.Set CompressionType=MSZIP
.Set UniqueFiles=OFF
.Set Cabinet=on
.Set Compress=on
.Set DestinationDir=Feature1
Feature1\Feature.xml
.Set DestinationDir=Feature1\Element1
Feature1\Element1\Elements.xml
.Set DestinationDir=Feature1\Element2
Feature1\Element2\Elements.xml
.Set DestinationDir=Feature2
Feature2\Feature.xml
.Set DestinationDir=Feature2\Element3
Feature2\Element3\Elements.xml
.Set DestinationDir=.
Manifest.xml

3.3 创建 .CAB 文件

保存 .DDF 文件后,使用操作系统自带的 MAKECAB 工具创建 .CAB 文件。确保在 .DDF 文件所在的文件夹中运行以下命令:

makecab /f MySolution.ddf

此命令将在执行 Makecab 的文件夹中创建一个名为 “Package” 的子文件夹,并将 MySolution.wsp 文件放入其中。

3.4 使用 stsadm.exe 安装解决方案

有了 .WSP 文件后,就可以使用 stsadm.exe 将解决方案安装到 SharePoint 服务器。以下是相关命令:
- 添加解决方案到 SharePoint 解决方案存储:

stsadm -o addsolution -filename MySolution.wsp
  • 部署解决方案:
stsadm -o deploysolution -name MySolution.wsp -immediate -allcontenturls
  • 收回解决方案:
stsadm -o retractsolution -name MySolution.wsp -immediate
  • 删除解决方案:
stsadm -o deletesolution -name MySolution.wsp

4. Visual Studio 中的 SharePoint 项目结构

4.1 项目结构概述

在 Visual Studio 2010 中创建新的 SharePoint 2010 项目时,它会自动为你创建一个项目结构。每个 SharePoint 项目都包含以下元素:
- 功能文件夹(Features)
- 包文件夹(Package)
- 零个或多个 SharePoint 项目项文件夹

以工作流项目为例,其结构如下:

Workflow Project
├── Features
│   └── WorkflowFeature
│       └── Feature.xml
├── Package
│   └── Package.package
└── Workflow1
    ├── Elements.xml
    └── Workflow1.cs

4.2 项目项文件的部署属性

每个 Visual Studio SharePoint 项目项中的项目项文件都设置了属性,用于定义文件在 SharePoint 服务器上的部署位置。这些属性可以在“属性”窗口的“SharePoint”类别中查看。

部署类型属性决定文件的部署位置,不同的部署类型对应不同的默认根路径和路径。以下是一些常见的部署类型及其默认值:
| 部署类型 | 根路径 | 路径 |
| — | — | — |
| NoDeployment | / | N/A |
| ElementManifest | {SharePointRoot}\Template\Features{FeatureName}{ProjectItemName} | |
| ElementFile | {SharePointRoot}\Template\Features{FeatureName}{ProjectItemName} | |
| TemplateFile | {SharePointRoot}\Template{ProjectName}{ProjectItemName} | |
| RootFile | {SharePointRoot}{ProjectName}{ProjectItemName} | |
| ClassResource | {ClassResourcePath}{ProjectName}{ProjectItemName} | |
| ApplicationResource | {WebApplicationRoot}\Resources{ProjectName}{ProjectItemName} | |
| AppGlobalResource | {WebApplicationRoot}\App_GlobalResources{ProjectName}{ProjectItemName} | |
| PackageOnly | / | {ProjectName}{ProjectItemName} |
| Resource | {SharePointRoot}\Template\Features\ | N/A |
| DwpFile | {WebApplicationRoot}\wpcatalog{ProjectName}{ProjectItemName} | |

当项目打包时,会枚举项目中的所有文件并检查其部署类型。如果文件的部署类型设置为 TemplateFile,例如,XML 元素 TemplateFile 将被添加到项目的 Manifest.xml 解决方案清单文件中。

4.3 功能设计器

功能文件夹中的功能可以通过双击打开功能设计器。功能设计器提供了功能清单文件(Feature.xml)的设计视图,通过它和“属性”窗口可以设置在 Feature.xml 文件中可直接编辑的所有内容。

以下是功能设计器“属性”窗口中显示的一些常见属性及其说明:
| 属性 | 描述 |
| — | — |
| Activate On Default | 指示功能在部署期间是否激活,默认设置为 True |
| Always Force Install | 如果设置为 True,功能将被强制安装,即如果已安装相同功能,将覆盖它,默认设置为 False |
| Auto Activate In Central Admin | 指示功能是否为管理员激活,默认设置为 False |
| Creator | 创建功能的开发人员的姓名 |
| Default Resource File | 从中检索功能资源的资源文件 |
| Deployment Path | 功能部署的路径 |
| Description | 功能的描述 |
| Feature Id | 功能的唯一 ID,一个 GUID |
| Image Alt Text | 与功能关联的图像的替代文本 |
| Image Url | 功能图像的 URL,此图像显示在 SharePoint 中的“网站功能”或“网站集功能”页面中 |
| Is Hidden | 指示功能是否在 SharePoint 上的可用功能列表中隐藏,默认设置为 False |
| Receiver Assembly | 如果功能有与之关联的功能事件接收器,则为其完全限定名称 |
| Receiver Class | 如果功能有与之关联的功能事件接收器,则为其类名 |
| Requires Resources | 指示 SharePoint 是否检查特定语言和文化的资源,默认设置为 False |
| Scope | 功能的范围 |
| Solution Id | 仅供内部使用,是功能将安装到的 SharePoint 服务器的 ID |
| Title | 功能的标题 |
| UIVersion | SharePoint 网站的兼容 UI 版本,此属性可以接受两个值:3 或 4。如果功能的 UIVersion 设置为 3,则该功能只能在 UI 设置为版本 3 的 SharePoint 网站上激活(例如,SharePoint 2007) |
| Upgrade Actions Receiver Assembly | 处理自定义升级操作的功能事件接收器的完全限定名称 |
| Upgrade Actions Receiver Class | 处理自定义升级操作的功能事件接收器的类名 |
| Version | 表示功能的版本 |

5. 使用 Visual Studio 创建 SharePoint 元素示例

5.1 创建空 SharePoint 项目

以下是创建空 SharePoint 项目并添加自定义操作元素的步骤:
1. 以管理员权限打开 Visual Studio 2010。
2. 点击“文件”>“新建项目”。
3. 展开“Visual C#”>“SharePoint”>“2010”节点,选择“空 SharePoint 项目”模板。
4. 将项目命名为 “HiddenFeatureAndImage”,然后点击“确定”启动 SharePoint 自定义向导。
5. 选择“作为场解决方案部署”,然后点击“完成”创建项目。

5.2 添加 SharePoint 项目项

由于空 SharePoint 项目默认没有任何功能,可以通过以下两种方式创建功能:
- 添加 SharePoint 项目项:每次向项目中添加 SharePoint 项目项时,它会自动重用项目中具有兼容范围的现有功能,或者如果项目中没有具有兼容范围的功能(或根本没有功能),则会创建一个新功能。
- 直接添加新的空功能:右键单击“功能”文件夹,从上下文菜单中选择“添加功能”。

接下来,添加一个 SharePoint 项目项:
1. 右键单击项目名称,选择“添加”>“新建项…”。
2. 选择“空元素”项目项模板,并将其命名为 “My Custom Action”。
3. 点击“添加”将项目项添加到项目中。

5.3 创建自定义操作元素

添加空元素项目项后,会得到一个空的 Elements.xml 文件。要使元素发挥作用,需要编写一些 XML。以下是一个创建自定义操作元素的示例,该元素将 Bing 搜索引擎的链接添加到 SharePoint 的“站点操作”菜单中:

<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
    <CustomAction
        Id="MyCustomAction"
        GroupId="SiteActions"
        Location="Microsoft.SharePoint.StandardMenu"
        Sequence="100"
        Title="Bing"
        Description="Search with Bing"
        ImageUrl="/_layouts/images/MyImage.png"
        Url="http://www.bing.com">
    </CustomAction>
</Elements>

5.4 部署项目

将上述 XML 代码添加到 Elements.xml 文件后,按 F5 部署项目。在 Web 浏览器中导航到 SharePoint 主页,打开“站点操作”菜单,会看到一个名为 “Bing” 的菜单项。

为了使自定义操作更美观,可以添加描述和图像。添加描述只需在 CustomAction 元素中添加 Description 属性。要部署图像,可以使用映射文件夹。

6. 总结

通过手动方式和使用 Visual Studio 两种方法,我们可以完成 SharePoint 解决方案的打包和部署。手动方式有助于我们深入理解 SharePoint 解决方案的工作原理,而 Visual Studio 则提供了更便捷的自动化工具,提高了开发效率。在实际开发中,可以根据具体需求选择合适的方法。无论是手动操作还是使用 Visual Studio,都需要掌握解决方案清单文件、项目结构和部署属性等关键知识,以确保解决方案的正确部署和运行。

7. 映射文件夹部署图像

7.1 映射文件夹的概念

映射文件夹是 Visual Studio 中用于简化 SharePoint 项目文件部署的一种机制。它允许开发者将本地项目中的文件夹与 SharePoint 服务器上的特定文件夹进行映射,这样在部署项目时,这些文件夹中的文件会自动被部署到对应的 SharePoint 位置。

7.2 使用映射文件夹部署图像的步骤

  1. 添加映射文件夹
    • 在 Visual Studio 中,右键单击项目名称,选择“添加”>“映射文件夹”。
    • 从弹出的列表中选择合适的目标文件夹,例如“Images”,这将在项目中创建一个与 SharePoint 服务器上的图像文件夹相对应的映射文件夹。
  2. 将图像文件添加到映射文件夹
    • 将准备好的图像文件(如 .png .jpg 等格式)复制到刚刚创建的映射文件夹中。
  3. 更新 CustomAction 元素的 ImageUrl 属性
    • 打开之前创建的 Elements.xml 文件,找到 CustomAction 元素。
    • 修改 ImageUrl 属性,使其指向映射文件夹中的图像文件。例如:
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
    <CustomAction
        Id="MyCustomAction"
        GroupId="SiteActions"
        Location="Microsoft.SharePoint.StandardMenu"
        Sequence="100"
        Title="Bing"
        Description="Search with Bing"
        ImageUrl="/_layouts/15/MyProjectName/Images/MyImage.png"
        Url="http://www.bing.com">
    </CustomAction>
</Elements>

这里的 MyProjectName 是你的项目名称, Images 是映射文件夹的名称, MyImage.png 是具体的图像文件名。

  1. 部署项目
    • 再次按 F5 部署项目。部署完成后,在 SharePoint 的“站点操作”菜单中,“Bing” 菜单项将显示你添加的图像。

8. 不同部署类型的深入分析

8.1 资源部署类型对比

部署类型 适用场景 部署位置 访问方式
ClassResource 用于部署程序集中控件所需的资源,如 Web 部件项目中的图像、脚本等 取决于程序集的部署位置(GAC 或 Web 应用程序) 可以通过 SPWebPartManager 类中的 GetServerRelativeClassResourcePath 方法从 Web 部件代码文件中访问
ApplicationResource 用于部署 SharePoint Web 应用程序所需的资源文件 C:\inetpub\wwwroot\wss\VirtualDirectories\[PORTNUMBER]\resources\MyProjectName\MyProjectItemName\ 可在 Web 应用程序中直接引用
AppGlobalResource 用于部署供 ASPX 页面和程序集使用的资源文件 C:\inetpub\wwwroot\wss\VirtualDirectories\[PORTNUMBER]\App_GlobalResources\MyProjectName\MyProjectItemName\ 可在 ASPX 页面和程序集中直接引用
Resource 用于部署特定于功能的资源 {SharePointRoot}\Template\Features\{Feature Name}\Resources\ 可在功能相关的代码中访问

8.2 不同部署类型的选择策略

  • 考虑资源的使用范围 :如果资源仅在某个功能内使用,选择 Resource 部署类型;如果资源供整个 Web 应用程序使用,选择 ApplicationResource AppGlobalResource 部署类型;如果资源与程序集中的控件相关,选择 ClassResource 部署类型。
  • 考虑资源的部署位置 :根据 SharePoint 服务器的文件夹结构和项目需求,选择合适的部署位置。例如,如果希望资源直接位于 SharePoint 根目录下,可以选择 RootFile 部署类型。

9. 功能范围与 Visual Studio 的选择逻辑

9.1 功能范围概述

功能范围定义了功能在 SharePoint 中的作用域,主要包括 Web (网站)和 Site (网站集)两种范围。不同的 SharePoint 元素可能与一种或多种范围兼容。

9.2 Visual Studio 选择功能范围的逻辑

当创建新的 SharePoint 项目时,Visual Studio 会遵循以下逻辑选择功能范围:
mermaid
graph TD;
A[创建新 SharePoint 项目] –> B{元素有多种兼容范围?};
B – 是 –> C[选择最低可用范围];
B – 否 –> D[使用唯一兼容范围];
C –> E[创建对应范围的功能];
D –> E;
F[项目已有高范围功能] –> G{新元素与高范围功能兼容?};
G – 是 –> H[添加到现有高范围功能];
G – 否 –> E;

例如,在创建列表定义项目时,列表模板与 Site Web 范围都兼容,Visual Studio 会选择 Web 范围创建新功能。但如果项目中已经存在 Site 范围的功能,且新的列表定义项目与该功能兼容,Visual Studio 会将其添加到现有的 Site 范围功能中。

10. 总结与最佳实践

10.1 手动与自动化部署的权衡

  • 手动部署 :适合深入学习 SharePoint 解决方案的工作原理,在需要对部署过程进行精细控制时使用。但手动操作繁琐,容易出错,不适合大规模项目。
  • Visual Studio 自动化部署 :提供了便捷的开发和部署环境,大大提高了开发效率。但开发者需要了解项目结构、部署属性等关键知识,以确保自动化部署的正确性。

10.2 最佳实践建议

  • 合理使用功能范围 :根据 SharePoint 元素的实际需求,选择合适的功能范围,避免功能范围过大或过小。
  • 正确设置部署类型 :根据资源的使用场景和部署位置,选择合适的部署类型,确保资源能够正确部署和访问。
  • 利用映射文件夹 :使用映射文件夹简化文件部署,特别是在部署图像、脚本等资源时。
  • 充分利用功能设计器 :通过功能设计器设置功能的各种属性,提高开发效率和代码的可读性。

通过遵循这些最佳实践,可以更高效地进行 SharePoint 解决方案的打包和部署,确保项目的顺利运行。

本设计项目聚焦于一款面向城市环保领域的移动应用开发,该应用以微信小程序为载体,结合SpringBoot后端框架MySQL数据库系统构建。项目成果涵盖完整源代码、数据库结构文档、开题报告、毕业论文及功能演示视频。在信息化进程加速的背景下,传统数据管理模式逐步向数字化、系统化方向演进。本应用旨在通过技术手段提升垃圾分类管理工作的效率,实现对海量环保数据的快速处理整合,从而优化管理流程,增强事务执行效能。 技术上,前端界面采用VUE框架配合layui样式库进行构建,小程序端基于uni-app框架实现跨平台兼容;后端服务选用Java语言下的SpringBoot框架搭建,数据存储则依托关系型数据库MySQL。系统为管理员提供了包括用户管理、内容分类(如环保视频、知识、新闻、垃圾信息等)、论坛维护、试题测试管理、轮播图配置等在内的综合管理功能。普通用户可通过微信小程序完成注册登录,浏览各类环保资讯、查询垃圾归类信息,并参在线知识问答活动。 在设计实现层面,该应用注重界面简洁性操作逻辑的一致性,在满足基础功能需求的同时,也考虑了数据安系统稳定性的解决方案。通过模块化设计规范化数据处理,系统不仅提升了管理工作的整体效率,也推动了信息管理的结构化自动化水平。整体而言,本项目体现了现代软件开发技术在环保领域的实际应用,为垃圾分类的推广管理提供了可行的技术支撑。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
内容概要:本文系统介绍了敏捷开发在汽车电子架构设计中的应用背景、核心理念及其相较于传统瀑布式开发的优势。文章从传统开发流程存在的问题切入,阐述了敏捷开发兴起的原因,并深入解析《敏捷软件开发宣言》提出的四大价值观:个体和互动高于流程和工具、工作的软件高于详尽的文档、客户合作高于合同谈判、响应变化高于遵循计划。重点强调敏捷开发以迭代为核心实践方式,通过小步快跑、持续交付可运行软件、频繁获取反馈来应对需求变化,提升开发效率客户价值。同时展示了敏捷开发在互联网和汽车行业的广泛应用,如苹果、谷歌、博世、奔驰等企业的成功实践,证明其在智能化转型中的普适性和有效性。; 适合人群:从事汽车电子、嵌入式系统开发的工程师,以及对敏捷开发感兴趣的项目经理、产品经理和技术管理者;具备一定软件开发背景,希望提升开发效率和团队协作能力的专业人士。; 使用场景及目标:①理解敏捷开发相对于传统瀑布模型的核心优势;②掌握敏捷开发四大价值观的内涵及其在实际项目中的体现;③借鉴行业领先企业的敏捷转型经验,推动团队或组织的敏捷实践;④应用于智能汽车、车联网等快速迭代系统的开发流程优化。; 阅读建议:此资源侧重理念实践结合,建议读者结合自身开发流程进行对照反思,在团队中推动敏捷思想的落地,注重沟通协作机制建设,并从小范围试点开始逐步实施迭代开发。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值