-
调试 SharePoint 解决方案
可以使用 Visual Studio 调试器来调试 SharePoint 解决方案。 启动调试后,Visual Studio 会将项目文件部署到 SharePoint Server,然后在Web 浏览器中打开 SharePoint 网站的一个实例。 以下各节说明如何在 Visual Studio 中调试 SharePoint 应用程序。
当您首次在 Visual Studio 中调试 SharePoint 解决方案时,将会出现一个对话框,警告您 web.config 文件尚未配置为启用调试。 (web.config 文件是在安装 SharePoint Server 时创建的。 有关更多信息,请参见 Working with Web.config Files(使用 Web.config 文件)。此对话框为您提供了两种选项:运行项目而不进行调试;修改 web.config 文件以启用调试。 如果您选择第一个选项,该项目会正常运行。 如果您选择第二个选项,配置 web.config 文件:
- 启用调用堆栈 (CallStack="true")
- 禁用 Visual Studio 中的自定义错误 (<customErrors mode="Off" />) RemoteOnly
- 启用编译调试 (<compilation debug="true">)
生成的 web.config 文件如下所示:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<configuration>
...
<SharePoint>
<SafeMode MaxControls="200"
CallStack="true"
DirectFileDependencies="10"
TotalFileDependencies="50"
AllowPageLevelTrace="false">
...
</SafeMode>
...
</SharePoint>
<system.web>
...
<customErrors mode="Off" />
...
<compilation debug="true">
...
</compilation>
...
</system.web>
...
</configuration>
若要撤消更改并禁用调试,请在 web.config 文件中更改以下 XML:
- 关闭调用堆栈 (CallStack="false")
- 启用 Visual Studio 中的自定义错误 (<customErrors mode="On" />) RemoteOnly
- 禁用编译调试 (<compilation debug="false">)
在调试模式下运行 SharePoint 项目时,SharePoint 部署过程将执行以下任务:
- 运行可自定义的预先部署命令。
- 使用 MSBuild 命令来创建 Web 解决方案包(.wsp) 文件。 该 .wsp 文件包括所有必要的文件和功能。 有关更多信息,请参见解决方案概述。
- 如果 SharePoint 解决方案是场解决方案,则回收指定网站 URL 的 IIS 应用程序池。 此步骤将释放 IIS 辅助进程锁定的文件。
- 如果已存在早期版本的包,则收回 .wsp 文件中早期版本的功能和文件。 此步骤将停用功能,卸载解决方案包并在SharePoint Server 上删除解决方案包。
- 安装 .wsp 文件中当前版本的功能和文件。 此步骤会在 SharePoint Server 上添加和安装解决方案。
- 对于工作流,安装工作流程序集。 可以使用 Assembly Location 属性更改程序集的位置。
- 如果作用域是网站或 Web,则激活 SharePoint 中的项目功能。 不激活场和 Web 应用程序作用域内的功能。
- 对于工作流,将工作流与您在“SharePoint 自定义向导”中选择的 SharePoint 库、列表或网站相关联。
说明
此关联仅当您在该向导中选择“是否自动与工作流关联”时发生。
- 运行可自定义的后期部署命令。
- 附加 Visual Studio 调试器附加到 Windows SharePoint Services 进程 (w3wp.exe)。如果项目类型允许您更改 Sandboxed Solution 属性,并且其值设置为 true,则调试器会附加到不同的进程 (spucworkerprocess.exe)。 有关更多信息,请参见沙盒解决方案注意事项。
- 如果 SharePoint 解决方案是场解决方案,则启动 JavaScript 调试器。
- 在 Web 浏览器中显示相应的库、列表或网站页。
在每个任务完成后,Visual Studio 都会在“输出”窗口中显示状态消息。 如果某个任务无法完成,则 Visual Studio 会在“错误列表”窗口中显示错误消息。
功能是一个可移植的模块化功能单元,它通过使用网站定义简化了网站修改工作。 功能还是一个 Windows SharePoint Services (WSS) 元素包,可以在特定的作用域内激活这些元素,以帮助用户完成特定目标或任务。 模板将作为功能进行部署。
在调试模式下运行项目时,部署过程将在 %COMMONPROGRAMFILES%Microsoft Sharedweb server extensions14TEMPLATEFEATURES 的功能目录下创建一个文件夹。 功能名称的格式为:项目名称_Featurex,如 TestProject_Feature1。
功能目录的解决方案的文件夹中包含一个功能定义文件和一个工作流定义文件。 功能定义文件 (Feature.xml) 在项目的功能。项目定义文件 (Elements.xml) 描述文件描述项目模板。 可在“解决方案资源管理器”中找到 Elements.xml,但 Feature.xml 是在创建解决方案包时生成的。 有关这些文件的更多信息,请参见 SharePoint 项目和项目项模板。
在调试工作流项目时,Visual Studio 会将工作流模板(取决于其类型)添加到库或列表中。 然后,您可以通过添加或更新项来以手动方式启动工作流模板。 之后,您可以使用 Visual Studio 调试工作流。
说明
如果添加对其他程序集的引用,请确保这些程序集安装在全局程序集缓存(GAC) 中。 否则工作流解决方案将失败。 有关如何安装程序集的信息,请参见Manually start a workflow on a document or item(在文档或项上手动启动工作流)。
但部署过程不会启动工作流。 必须从 SharePoint 网站启动工作流。 还可以通过使用客户端应用程序(例如 Microsoft Office Word 2010)或使用单独的服务器端代码来启动工作流。 使用在“SharePoint 自定义向导”中指定的某一种方法。
例如,如果您指定可以手动启动工作流,则直接从库或列表中的项启动工作流。 有关如何手动启动工作流的更多信息,请参见 Manually start a workflow on a document item(在文档项上手动启动工作流)。
默认情况下,在运行 Visual Studio SharePoint 应用程序时,将在 SharePoint Server 上自动为您激活该应用程序的功能。 不过,在调试功能事件接收器时,这会导致问题,原因是当 Visual Studio 激活某个功能时,该功能会在不同于调试器的进程中运行。 这意味着,一些调试功能(如断点)将无法正常工作。
若要在 SharePoint 中禁用功能的自动激活并允许对功能事件接收器进行适当的调试,请在调试之前将项目的“活动部署配置”属性的值设置为“无激活”。 然后,在中,在开始调试您在 Visual Studio后的 SharePoint 应用程序,请手动激活 SharePoint 中的功能。 若要激活该功能,请打开 SharePoint 中的 网站操作 菜单上,选择 站点设置,选择 管理网站功能 链接,该功能旁边的按钮,然后选择 激活 继续调试作为普通。
由于 Visual Studio 进程 (devenv.exe)、Visual Studio SharePoint 宿主进程 (vssphost4.exe) 、SharePoint 和 WCF 层之间的交互有时会很复杂,因此对生成、部署时出现的错误进行诊断会非常困难。 可以通过启用增强的调试信息来帮助您解决此类错误。 为此,请转至 Windows 注册表中的以下注册表项:
[HKEY_CURRENT_USERSoftwareMicrosoftVisualStudio11.0SharePointTools]
如果“EnableDiagnostics”REG_DWORD 值已不存在,请手动创建它。 设置“EnableDiagnostics”值为“1 ". "
在将此键值设置为 1 后,只要在 Visual Studio 中运行时出现项目系统错误,“输出”窗口中就会显示堆栈跟踪信息。 若要禁用增强的调试信息,请将 EnableDiagnostics 设置为 0 或删除该值。
有关其他 SharePoint 注册表项的更多信息,请参见 在 Visual Studio 中调试 SharePoint 工具扩展。
源文档 <http://msdn.microsoft.com/zh-cn/library/vstudio/ee231550.aspx>