可以使用 Visual Studio 调试器调试 SharePoint 解决方案。 开始调试时,Visual Studio 会将项目文件部署到 SharePoint 服务器,然后在 Web 浏览器中打开 SharePoint 网站的实例。 以下部分介绍如何在 Visual Studio 中调试 SharePoint 应用程序。
启用调试
在 Visual Studio 中首次调试 SharePoint 解决方案时,对话框会提醒你未将 web.config 文件配置为启用调试。 (安装 SharePoint 服务器时会创建 web.config 文件。有关详细信息,请参阅 “使用 Web.config 文件”。)该对话框提供运行项目的选项,而无需调试或修改 web.config 文件以启用调试。 如果选择第一个选项,项目将正常运行。 如果选择第二个选项,则 web.config 文件配置为:
打开调用堆栈 (
CallStack="true")在 Visual Studio 中禁用自定义错误 (
<customErrors mode="Off" />)启用编译调试 (
<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" />)禁用编译调试 (
<compilation debug="false">)
F5 调试和部署过程
在调试模式下运行 SharePoint 项目时,SharePoint 部署过程将执行以下任务:
运行可自定义的预部署命令。
使用 MSBuild 命令创建 Web 解决方案包 (.wsp) 文件。 .wsp 文件包括所有必要的文件和功能。 有关详细信息,请参阅 解决方案概述。
如果 SharePoint 解决方案是农场解决方案,将回收指定网站 URL 的 IIS 应用程序池。 此步骤释放 IIS 工作进程锁定的文件。
如果包的早期版本已存在,则撤销 .wsp 文件中的以前版本的功能和文件。 此步骤将停用这些功能,卸载解决方案包,然后删除 SharePoint 服务器上的解决方案包。
在 .wsp 文件中安装当前版本的功能和文件。 此步骤在 SharePoint 服务器上添加并安装解决方案。
对于工作流,安装工作流程序集。 可以使用 程序集位置 属性更改其位置。
如果范围是网站或 Web,则激活 SharePoint 中的项目功能。 服务器场和 Web 应用程序作用域内的功能未激活。
对于工作流,将工作流与在 SharePoint 自定义向导中选择的 SharePoint 库、列表或网站相关联。
注释
仅当在向导中选择 了“自动关联工作流 ”时,才会发生此关联。
运行可自定义的部署后命令。
将 Visual Studio 调试器附加到 Windows SharePoint Services 进程(w3wp.exe)。 如果项目类型允许你更改 沙盒解决方案 属性并将其值设置为 true,则调试器会附加到其他进程(SPUCWorkerProcess.exe)。 有关详细信息,请参阅 沙盒解决方案注意事项。
如果 SharePoint 解决方案是场解决方案,则启动 JavaScript 调试器。
在 Web 浏览器中显示相应的库、列表或网站页面。
完成每个任务后,Visual Studio 会在“输出”窗口中显示状态消息。 如果任务无法完成,Visual Studio 会在“错误列表”窗口中显示错误消息。
SharePoint 项目功能
功能是一个可移植的模块化功能单元,它通过使用网站定义简化了网站修改。 它也是 Windows SharePoint Services (WSS) 元素的包,可以针对特定范围激活,并帮助用户完成特定目标或任务。 模板被部署为功能的一部分。
在调试模式下运行项目时,部署过程会在 功能 目录中创建一个文件夹,该文件夹位于 %COMMONPROGRAMFILES%\Microsoft Shared\web 服务器扩展\14\TEMPLATE\FEATURES。 功能名称具有格式 项目名称_Featurex,例如TestProject_Feature1。
功能目录中的解决方案文件夹包含 功能定义 文件和 工作流定义 文件。 功能定义文件(Feature.xml)描述项目的功能。项目定义文件(Elements.xml)描述项目模板。 可以在解决方案资源管理器中找到 Elements.xml,但在创建解决方案包时会生成 Feature.xml。 有关这些文件的详细信息,请参阅 SharePoint 项目和项目项模板。
调试工作流
调试工作流项目时,Visual Studio 会将工作流模板(具体取决于其类型)添加到库或列表中。 然后,可以手动启动工作流模板,也可以通过添加或更新项来启动工作流模板。 然后,可以使用 Visual Studio 调试工作流。
注释
如果添加对其他程序集的引用,请确保这些程序集安装在全局程序集缓存中(GAC)。 否则,工作流解决方案将失败。 有关如何安装程序集的信息,请参阅 在文档或项上手动启动工作流。
但是,部署过程不会启动工作流。 必须从 SharePoint 网站启动工作流。 还可以使用客户端应用程序(如 Microsoft Office Word 2010)或使用单独的服务器端代码来启动工作流。 使用 SharePoint 自定义向导中指定的方法之一。
例如,如果指定可以手动启动工作流,请直接从库或列表中的项启动工作流。 有关如何手动启动工作流的详细信息,请参阅 手动启动文档项上的工作流。
调试功能事件接收器
默认情况下,运行 Visual Studio SharePoint 应用程序时,会在 SharePoint 服务器上自动激活其功能。 但是,这会导致调试功能事件接收器时出现问题,因为当 Visual Studio 激活某个功能时,它会在与调试器不同的进程中运行。 这意味着某些调试功能(如断点)将无法正常工作。
若要禁用 SharePoint 中功能的自动激活并允许正确调试功能事件接收器,请在调试之前将项目的 “活动部署配置” 属性的值设置为 “无激活 ”。 然后,在 Visual Studio 中开始调试 SharePoint 应用程序后,在 SharePoint 中手动激活该功能。 若要激活该功能,请在 SharePoint 中打开 “网站作 ”菜单,选择 “网站设置”,选择“ 管理网站功能 ”链接,然后选择功能旁边的 “激活 ”按钮,继续正常调试。
启用增强的调试信息
由于 Visual Studio 进程(devenv.exe)、Visual Studio SharePoint 主机进程(vssphost4.exe)、SharePoint 和 WCF 层之间有时复杂的交互,因此诊断生成、部署等时发生的错误可能是一个挑战。 为了帮助你解决此类错误,可以启用增强的调试信息。 为此,请转到 Windows 注册表中的以下注册表项:
HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\11.0\SharePointTools
如果“EnableDiagnostics” REG_DWORD 值尚不存在,请手动创建它。 将“EnableDiagnostics”值设置为“1”。
将此键值设置为 1 会导致每当在 Visual Studio 中运行时发生项目系统错误时,堆栈跟踪信息都会显示在 “输出 ”窗口中。 若要禁用增强的调试信息,请将 EnableDiagnostics 设置回 0,或删除该值。
有关其他 SharePoint 注册表项的详细信息,请参阅 Visual Studio 中 SharePoint 工具的调试扩展。