SharePoint开发:部署配置、冲突解决与环境搭建
1. 验证新部署配置
要验证新的部署配置,可将其设置为活动配置并部署项目。其行为与默认配置相同,但在自定义配置中,还会将 .WSP 文件复制到代码中指定的位置。
2. 部署冲突
在开发过程中,通常会反复将同一项目部署到 SharePoint 服务器的同一位置。每次部署前,SharePoint 解决方案会从服务器撤回,但有时希望在覆盖服务器上已有的解决方案或项目时得到提示。当服务器上的项目与 SharePoint 解决方案中的项目具有相同的名称、URL 或 ID 时,Visual Studio 会检测到冲突,并显示部署冲突对话框。
3. 可配置部署
-
部署冲突解决操作
:SharePoint 项目项都有一个“部署冲突解决”属性,可设置当服务器上已存在具有相同 URL、ID 或名称的项目时采取的操作。有三种操作可供选择:
- 无(None) :Visual Studio 不会检测冲突,若服务器上已有同名、ID 或 URL 的项目,SharePoint 元素将被覆盖。
- 自动(Automatic) :Visual Studio 检测到冲突后,会自动删除旧项目来解决冲突,并将冲突信息记录在输出窗口。
- 提示(Prompt) :Visual Studio 会显示对话框,此时可选择取消部署、自动解决冲突或勾选“不再为此类项目提示”以在未来忽略该对话框,同时项目项的部署冲突解决操作将设置为自动。
| SharePoint 元素 | 默认冲突解决操作 |
|---|---|
| 内容类型(Content Type) | 无(None) |
| 列表实例(List Instance) | 提示(Prompt) |
| 模块(Module) | 自动(Automatic) |
| 可视化 Web 部件(Visual Web Part) | 自动(Automatic) |
| Web 部件(Web Part) | 自动(Automatic) |
除了在 SharePoint 项目项级别检测冲突外,还会在 SharePoint 包级别进行检测。部署时,Visual Studio 会检查服务器上是否已存在同名包,若存在则显示相应对话框。点击“是”,服务器上的包将被撤回并部署新包;点击“否”,现有包不撤回,新包部署失败。
4. 沙盒和农场解决方案
-
沙盒解决方案
:是 SharePoint 2010 的新功能,允许用户将自己的解决方案上传到 SharePoint 服务器,常用于部署仅含代码的 Web 部件。沙盒解决方案在安全且受监控的进程中运行,对 SharePoint 农场的其他部分访问受限,适合 SharePoint 托管提供商。为更好保护服务器,沙盒解决方案程序集加载到与农场解决方案不同的进程中,且可设置配额。但沙盒解决方案有一定限制,并非所有 Visual Studio 中的 SharePoint 项目都能作为沙盒解决方案部署,也不能使用 SharePoint 2010 服务器程序集 Microsoft.Office.Server 中的对象模型类型,但仍可使用 Microsoft.SharePoint 程序集中的许多对象、属性和方法。
| 支持的 SharePoint 元素 |
| — |
| 内容类型(Content Types) |
| 自定义操作(Custom Actions) |
| 事件接收器(Event Receivers) |
| 字段(Fields) |
| 列表定义(List Definitions) |
| 列表实例(List Instances) |
| 模块(Modules) |
| Web 部件(Web Parts) |
不能在沙盒解决方案中使用的 SharePoint 项目包括工作流、可视化 Web 部件、映射文件夹、应用程序页面以及所有农场和 Web 应用程序范围的功能。
5. 自动撤回
自动撤回功能旨在减少部署或调试 SharePoint 项目所需的时间。调试会话结束时,该功能会自动撤回解决方案、回收 IIS 应用程序池,并为下一次部署或调试会话准备 SharePoint 服务器。此过程在 Visual Studio 从调试模式切换到设计模式时在后台进行。下次部署项目或开始调试时,将执行活动部署配置中的部署步骤。由于调试会话结束时自动撤回已执行了回收 IIS 和撤回步骤,再次执行时会检查是否需要执行,这种情况下可跳过这些步骤,使调试会话启动更快。需注意,自动撤回仅在调试会话停止时执行,若使用上下文菜单或 Visual Studio 菜单中的“部署”命令,或不附加调试器启动项目(如 Ctrl + F5),SharePoint 解决方案不会自动撤回。该功能默认对每个 SharePoint 项目启用,可通过取消 SharePoint 属性页中的“调试后自动撤回”复选框来修改设置。
6. Silverlight 调试
在 SharePoint 属性页中启用 Silverlight 调试选项,可调试与 SharePoint 项目一起部署的 Silverlight XAP 文件,常用于 Web 部件或应用程序页面开发场景。
创建 Silverlight 项目步骤
:
1. 打开 Visual Studio。
2. 点击“文件”>“新建项目”。
3. 展开“Visual C#”节点,选择“Silverlight”。
4. 选择“Silverlight 应用程序”模板,命名为“MySilverlightApp”。
5. 点击“确定”。
6. 取消“在新网站中托管 Silverlight 应用程序”复选框,点击“确定”创建项目。
7. 在 MainPage.xaml 的 UserControl 标签内添加以下 XAML 代码:
<Grid x:Name="LayoutRoot" Background="White">
<Button Content="Click Me" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" Width="75" Click="btnMyButton_Click"/>
</Grid>
- 双击设计器上的按钮创建点击事件处理程序。
- 在 btnMyButton_Click 方法中插入断点。
创建空 SharePoint 项目步骤
:
1. 右键单击解决方案名称,选择“添加”>“新项目”。
2. 选择“空 SharePoint 项目”模板,命名为“SPSilverlight”,点击“确定”,确保在向导中选择农场解决方案,然后点击“完成”创建项目。
部署 Silverlight XAP 文件步骤
:
1. 打开 Internet 浏览器,导航到 SharePoint 主页。
2. 打开“网站操作”菜单,点击“新建文档库”。
3. 在“名称”文本框中输入“XAPs”。
4. 在“导航”部分选择“否”,不将库显示在快速启动栏上。
5. 在“文档模板”下拉列表中选择“无”。
6. 点击“创建”按钮创建文档库。
添加新模块项目项步骤
:
1. 右键单击 SPSilverlight SharePoint 项目节点,选择“添加”>“新项”。
2. 选择“模块”项目项模板,命名为“XapModule”。
3. 点击“添加”创建项目项。
4. 删除默认创建的 Sample.txt 文件。
5. 选择 XapModule 文件夹,打开“属性”窗口,找到“项目输出引用”属性,点击“(…)”按钮,在出现的对话框中点击“添加”按钮添加新引用。
6. 将“项目名称”属性更改为 MySilverlightApp,将“部署类型”更改为“元素文件”,点击“确定”关闭对话框。
7. 在 Elements.xml 文件中为 Module 元素添加 Url 属性,修改 File 元素的 Url 属性,将其值改为“XAPs”,并从 File 元素的 Url 属性中移除项目项名称(XapModule)。
8. 为 File 元素添加 Type 属性,值为“GhostableInLibrary”,以告知 SharePoint 为 XAP 文件在库中创建新列表项。最终的 Elements.xml 文件如下:
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<Module Name="XapModule" Url="XAPs">
<File Path="MySilverlightApp.xap" Url="MySilverlightApp.xap" Type="GhostableInLibrary">
<Property Name="ContentType" Value="Document" />
</File>
</Module>
</Elements>
添加应用程序页面并引用 XAP 文件步骤
:
1. 右键单击 SPSilverlight 项目,选择“添加”>“新项”,选择“应用程序页面”模板,点击“添加”将 ASPX 页面添加到项目。
2. 修改 Main asp:Content 标签,使其如下所示:
<asp:Content ID="Main" ContentPlaceHolderID="PlaceHolderMain" runat="server">
<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
<param name="source" value="/XAPs/MySilverlightApp.xap"/>
<param name="onError" value="onSilverlightError" />
<param name="background" value="white" />
<param name="minRuntimeVersion" value="4.0.50826.0" />
<param name="autoUpgrade" value="true" />
<a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=4.0.50826.0" style="text-decoration:none">
<img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="Get Microsoft Silverlight" style="border-style:none"/>
</a>
</object><iframe id="_sl_historyFrame" style="visibility:hidden;height:0px;width:0px;border:0px"></iframe>
</asp:Content>
- 启用 SharePoint 属性页中的 Silverlight 调试,右键单击 ApplicationPage1.aspx 文件,选择“设为启动项”,按 F5 部署 SharePoint 项目。浏览器打开后应导航到应用程序页面,点击 Silverlight 应用程序中的按钮,点击处理程序中的断点将被命中。
7. 准备 SharePoint 开发环境
开发 SharePoint 解决方案的首要挑战是准备开发机器。要在开发机器上使用 Visual Studio 和 SharePoint,需安装 64 位操作系统,因为 SharePoint 2010 仅支持 64 位系统。
支持的操作系统
:
- 服务器操作系统:Microsoft Windows Server 2008 和 Microsoft Windows Server 2008 R2 是完全支持 SharePoint 2010 的服务器操作系统。
- 客户端操作系统:SharePoint 2010 也可安装在运行 Microsoft Windows Vista SP1(或更高版本)或 Microsoft Windows 7 的 64 位客户端操作系统上,但此配置仅用于开发,非生产环境。若需要产品支持,可能需在完全支持的服务器操作系统上重现问题。建议在 64 位 Windows 7 上使用 SharePoint 2010 进行开发。
安装 SharePoint 2010 时,可选择安装 Microsoft SharePoint Foundation 2010 或更高端的 Microsoft SharePoint Server 2010。Visual Studio 中唯一需要安装高端 SharePoint Server 2010 的功能是部署业务数据连接(BDC)模型。若安装的是 SharePoint Foundation 2010,仍可使用 Visual Studio 中的新 BDC 模型设计器创建 BDC 模型,但需添加自定义功能事件接收器才能将其部署到业务连接服务元数据目录。
无论是在服务器操作系统还是客户端操作系统上安装 SharePoint 2010,都需确保系统至少有 4GB 内存和 4GB 可用磁盘空间。
SharePoint开发:部署配置、冲突解决与环境搭建
8. 部署配置总结
通过上述介绍,我们了解到在 SharePoint 开发中部署配置的重要性以及多种配置方式和处理策略。下面以流程图的形式总结部署过程中的关键步骤和决策点:
graph LR
A[开始部署] --> B{是否存在部署冲突?}
B -- 是 --> C{冲突解决方式}
C -- 无 --> D[直接覆盖]
C -- 自动 --> E[自动删除旧项]
C -- 提示 --> F[显示冲突对话框]
F -- 取消部署 --> G[部署终止]
F -- 自动解决 --> E
F -- 忽略 --> H[继续部署]
B -- 否 --> H
H --> I{是否为沙盒解决方案?}
I -- 是 --> J[按沙盒规则部署]
I -- 否 --> K[按农场解决方案部署]
J --> L{是否启用自动撤回?}
K --> L
L -- 是 --> M[调试结束自动撤回]
L -- 否 --> N[正常部署流程]
M --> O[准备下次部署]
N --> O
9. 不同 SharePoint 元素的特点与应用
不同的 SharePoint 元素在开发中有着各自的特点和用途,并且默认的冲突解决方式也有所不同。我们可以根据实际需求选择合适的元素和冲突解决策略,以下是对这些元素的进一步分析:
| SharePoint 元素 | 默认冲突解决方式 | 特点与应用场景 |
| — | — | — |
| 内容类型(Content Type) | 无 | 用于定义文档或列表项的结构和行为,适用于需要统一数据格式的场景。例如,在企业文档管理中,可定义不同类型的文档内容类型,当部署时不考虑冲突,直接覆盖旧内容类型。 |
| 列表实例(List Instance) | 提示 | 用于创建具体的列表,如任务列表、文档库等。由于列表中可能包含重要数据,默认提示用户处理冲突,避免误操作导致数据丢失。 |
| 模块(Module) | 自动 | 通常用于部署文件或页面,如网站页面、样式表等。自动解决冲突可确保每次部署时最新的文件被正确更新。 |
| 可视化 Web 部件(Visual Web Part) | 自动 | 提供可视化的用户界面,可用于展示数据、图表等。自动解决冲突能保证 Web 部件的最新版本被部署。 |
| Web 部件(Web Part) | 自动 | 与可视化 Web 部件类似,但可能更侧重于功能实现。自动解决冲突可确保功能的正常更新。 |
10. 沙盒与农场解决方案的对比与选择
沙盒解决方案和农场解决方案在功能、安全性和适用场景上存在明显差异,开发者需要根据具体需求进行选择。以下是两者的详细对比:
| 对比项 | 沙盒解决方案 | 农场解决方案 |
| — | — | — |
| 功能限制 | 部分 SharePoint 项目无法使用,如工作流、可视化 Web 部件等;不能使用 SharePoint 2010 服务器程序集 Microsoft.Office.Server 中的对象模型类型。 | 功能完整,可使用所有 SharePoint 功能和对象模型。 |
| 安全性 | 在安全且受监控的进程中运行,对 SharePoint 农场其他部分访问受限,适合多租户环境,可防止恶意代码影响整个农场。 | 权限较高,可直接访问 SharePoint 农场的所有资源,若代码存在安全漏洞,可能影响整个农场。 |
| 适用场景 | 适合个人开发者或小型团队上传自己的解决方案,如仅含代码的 Web 部件;常用于 SharePoint 托管提供商,允许用户上传自定义解决方案。 | 适用于企业级开发,需要使用完整 SharePoint 功能的场景,如开发复杂的业务应用、工作流系统等。 |
11. 开发技巧与注意事项
在 SharePoint 开发过程中,掌握一些开发技巧和注意事项可以提高开发效率和代码质量。
-
自动撤回功能的合理使用
:自动撤回功能可加快调试和部署速度,但仅在调试会话结束时生效。因此,在日常开发中,若经常使用“部署”命令或不附加调试器启动项目,需手动撤回解决方案,避免出现部署问题。
-
Silverlight 调试的要点
:在进行 Silverlight 调试时,要确保正确配置 SharePoint 属性页中的 Silverlight 调试选项,并将应用程序页面设置为启动项。同时,要注意 XAP 文件的部署路径和引用方式,确保文件能被正确加载。
-
冲突解决策略的选择
:根据不同的 SharePoint 元素和实际情况,选择合适的冲突解决策略。对于重要数据和关键功能,建议选择提示方式,以便人工干预;对于一些更新频繁的文件或页面,可选择自动解决方式。
12. 总结与展望
通过对 SharePoint 开发中部署配置、冲突解决、沙盒与农场解决方案、自动撤回和 Silverlight 调试等方面的介绍,我们了解到 SharePoint 开发是一个复杂而又充满挑战的过程。开发者需要掌握各种技术和工具,根据实际需求选择合适的开发方案和配置选项。
未来,随着 SharePoint 技术的不断发展,开发工具和功能可能会进一步完善和扩展。例如,可能会出现更智能的冲突解决机制、更便捷的沙盒解决方案开发工具等。开发者需要持续关注技术动态,不断学习和提升自己的技能,以适应不断变化的开发需求。同时,也要注重代码的安全性和性能优化,确保开发出高质量的 SharePoint 应用程序。
303

被折叠的 条评论
为什么被折叠?



