在 Visual Studio 中调试 SharePoint 工具扩展
您可以在 Visual Studio 的实验实例或常规实例中调试 SharePoint 工具扩展。 如果需要对扩展的行为进行疑难解答,您可以修改注册表值以显示其他错误信息并配置 Visual Studio 执行 SharePoint 命令的方式。
在 Visual Studio 的实验实例中调试扩展
为了防止 Visual Studio 开发环境受到未经测试的扩展造成的意外损坏,Visual Studio SDK 提供了一个称为“实验实例”的替代 Visual Studio 实例,您可以使用该实例来安装和测试扩展。 您可以使用 Visual Studio 的常规实例开发新扩展,但在实验实例中调试和运行这些扩展。 有关更多信息,请参见 Experimental Instance of Visual Studio。
如果使用 VSIX 项目来部署扩展,并且该 VSIX 项目是解决方案中的启动项目,则当您调试解决方案时,Visual Studio 将自动在实验实例中安装和运行该扩展。 启动项目是指在调试包含多个项目的解决方案时启动的项目。 有关使用 VSIX 项目来部署扩展的更多信息,请参见在 Visual Studio 中部署 SharePoint 工具扩展。 有关启动项目的更多信息,请参见如何:选择启动项目。
有关演示如何在 Visual Studio 的实验实例中调试各种类型的扩展的示例,请参见以下演练:
在 Visual Studio 的常规实例中调试扩展
如果要在 Visual Studio 的常规实例中调试扩展项目,请首先在常规实例中安装该扩展。 然后,将调试器附加到另一个 Visual Studio 进程。 完成之后,您可以移除扩展,以使其不再在开发计算机上加载。
安装扩展
关闭 Visual Studio 的所有实例。
在扩展项目的生成输出文件夹中,双击 .vsix 文件。
在**“Visual Studio Extension Installer”对话框中,选择要将扩展安装到的 Visual Studio 的版本,然后单击“安装”**。
Visual Studio 会将扩展文件安装到 %UserProfile%\AppData\Local\Microsoft\VisualStudio\10.0\Extensions\作者姓名\扩展名称\版本 中。 此路径中的最后三个文件夹是通过扩展的 extension.vsixmanifest 文件中的 Author、Name 和 Version 元素来构造的。
在 Visual Studio 安装完扩展之后,单击**“关闭”**。
调试扩展
利用管理员特权启动 Visual Studio,并打开扩展项目。 以下步骤将这个 Visual Studio 实例称为“第一个实例”。
利用管理员特权启动 Visual Studio 的另一个实例。 以下步骤将这个 Visual Studio 实例称为“第二个实例”。
切换到 Visual Studio 的第一个实例。
在**“调试”菜单上,单击“附加到进程”**。
在**“可用进程”**列表中,单击“devenv.exe”。 此项指的是 Visual Studio 的第二个实例;这是要在其中调试项目扩展的实例。
单击**“附加”**。
Visual Studio 将以调试模式运行扩展项目。
切换到 Visual Studio 的第二个实例。
创建加载扩展的新 SharePoint 项目。 例如,如果要调试列表定义项目项的扩展,请创建**“列表定义”**项目。
执行测试扩展代码所需的任何步骤。
完成扩展调试后,关闭 Visual Studio 的第二个实例。
移除扩展
在 Visual Studio 中的**“工具”菜单上,单击“扩展管理器”**。
**“扩展管理器”**对话框将打开。
在扩展列表中,单击扩展的名称,然后单击**“卸载”**。
在出现的对话框中,单击**“是”**以确认您要卸载该扩展。
单击**“立即重新启动”**以完成卸载。
调试 SharePoint 命令
若要调试作为 SharePoint 工具扩展的一部分的 SharePoint 命令,您必须将调试器附加到 vssphost4.exe 进程。 此进程是执行 SharePoint 命令的 64 位宿主进程。 有关 SharePoint 命令和 vssphost4.exe 的更多信息,请参见调入 SharePoint 对象模型。
将调试器附加到 vssphost4.exe 进程
通过按照上述说明执行操作,可以在 Visual Studio 实验实例中或 Visual Studio 常规实例中开始调试扩展。
在正在运行调试器的 Visual Studio 实例中,在**“调试”菜单上单击“附加到进程”**。
在**“可用进程”**列表中,单击 vssphost.exe。
提示
如果列表中没有显示 vssphost.exe,则必须在正运行扩展的 Visual Studio 实例中开始 vssphost4.exe 进程。 通常,可以通过执行使 Visual Studio 连接到开发计算机上的 SharePoint 网站的操作来做到这一点。 例如,在展开位于“服务器资源管理器”窗口中的“SharePoint 连接”节点下的网站连接节点(此节点显示网站 URL)时,或在将某些 SharePoint 项目项(如“列表实例”或“事件接收器”项)添加到 SharePoint 项目中时,Visual Studio 会启动 vssphost4.exe。
单击**“附加”**。
在正在调试的 Visual Studio 实例中,执行在执行命令时所需的步骤。
修改注册表值以帮助调试 SharePoint 工具扩展
在 Visual Studio 中调试 SharePoint 工具的扩展时,可以修改注册表中的值以帮助对此扩展进行疑难解答。 这些值位于 HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\10.0\SharePointTools 项下。 默认情况下,这些值不存在。
若要帮助对 SharePoint 工具的任何扩展进行疑难解答,可以设置 EnableDiagnostics 值。 下表描述了此值。
值 |
说明 |
---|---|
EnableDiagnostics |
REG_DWORD,指定是否在“输出”窗口中显示诊断消息。 若要显示诊断消息,请将此值设置为 1。 若要停止显示消息,请将此值设置为 0 或删除此值。 若要将消息从 SharePoint 工具扩展写入到“输出”窗口,请使用 SharePoint 项目服务。 有关更多信息,请参见使用 SharePoint 项目服务。 |
如果扩展中包括某个 SharePoint 命令,则可以设置其他值以帮助对该命令进行疑难解答。 下表描述了这些值。
值 |
说明 |
---|---|
AttachDebuggerToHostProcess |
用于指定是否显示对话框的 REG_DWORD,利用此对话框可在 vssphost4.exe 启动时将调试器附加到其中。 如果 vssphost.exe 在启动后立即执行要调试的命令,并且在执行该命令前没有足够的时间来手动附加调试器,这将会很有用。 为了显示此对话框,vssphost4.exe 在启动时将调用 Debugger.Break 方法。 若要启用此行为,请将该值设置为 1。 若要禁用此行为,请将该值设置为 0 或删除该值。 若将该值设置为 1,则可能还需要增大 HostProcessStartupTimeout 值,以使您在 Visual Studio 期待 vssphost4.exe 发出已成功启动信号前有足够的时间附加调试器。 |
ChannelOperationTimeout |
REG_DWORD,指定 Visual Studio 等待 SharePoint 命令执行的时间(以秒为单位)。 如果命令未及时执行,则会引发 SharePointConnectionException。 默认值为 120 秒。 |
HostProcessStartupTimeout |
REG_DWORD,指定 Visual Studio 等待 vssphost4.exe 发出成功启动信号的时间(以秒为单位)。 如果 vssphost4.exe 未及时发出成功启动信号,则会引发 SharePointConnectionException。 默认值为 60 秒。 |
MaxReceivedMessageSize |
REG_DWORD,指定在 Visual Studio 和 vssphost4.exe 之间传递的 WCF 消息的最大允许大小(以字节为单位)。 默认值为 1,048,576 字节 (1 MB)。 |
MaxStringContentLength |
REG_DWORD,指定在 Visual Studio 和 vssphost4.exe 之间传递的字符串的最大允许大小(以字节为单位)。 默认值为 1,048,576 字节 (1 MB)。 |