2010-04-05 65 views
4

最近我试图通过wspbuilder实用程序将webpart安装到Sharepoint网站。我已经创建,建立并部署了一个项目到12蜂巢。之后,通过中央管理网站安装解决方案,并在网站集中激活。如何通过Visual Studio调试Sharepoint解决方案/功能?

我只是想知道我该如何调试复杂的功能/解决方案?由于这两个进程(构建 - 部署和激活)完全独立,我如何将进程与工作进程相关联?

+0

您可以通过使用Abhijit Jana的以下博客文章中的建议找出要分派给哪个Sharepoint进程:http://abhijitjana.net/2010/07/15/identifying-worker-process-w3wp-exe -iis-6-0-and-iis-7-0-for-debugging-asp-net-application/ – Mattias 2012-09-11 11:20:29

回答

3

在WSPBuilder上下文菜单中有一个选项“附加到IIS工作进程”。只要应用程序已加载(通常意味着您在尝试连接之前访问了SharePoint网站中的页面),并且SharePoint中部署的代码与Visual Studio中的代码相同,则您应该能够设置断点并逐步完成代码。

2

首先,您需要打开浏览器并导航到SharePoint网站。然后,在Visual Studio中,转至调试 - >附加到进程,并找到与要调试的Sharepoint网站关联的w3wp.exe进程。点击它(过程),然后点击附加按钮。您现在应该能够调试与您的SharePoint功能相关的任何活动。

+1

不要忘记在你的代码中的某个地方设置一个断点! – 2010-04-05 21:46:31

2

有时,找出要附加到哪个w3wp进程有点痛苦。尝试加入以下代码打入调试器:

System.Diagnostics.Debugger.Break();

+0

因此使用System.Diagnostics.Debugger.Break();意味着您不必确定哪个w3wp.exe进程与Sharepoint网站相关联?有否反过来确定这一点呢? – StuperUser 2010-07-27 13:46:16

+0

这是正确的,它是全部自动的。 – 2010-07-27 15:13:30

+0

我必须处于调试模式才能使用它吗? – Kungen 2013-12-02 13:08:56

1
System.Diagnostics.Debugger.Break() 

像Muhimbi认为,这实际上是在某些情况下非常有用的。假设您想要调试自定义代码(例如feature_deactivating事件)时,它可能会被stsadm而不是浏览器调用。 (例如,当功能在UI中隐藏时,您将不得不使用stsadm来禁用功能)。使用stsadm时,无法附加到cmd.exe,因为这是一个单独的过程。如果你输入命令,然后按回车键,然后找到它的ID附加到stsadm.exe进程,它为时已晚。在类似这种情况下,上面的命令是easist和最佳的解决方案

1

我试过的步骤如下

提到去调试 - >附加到进程,并找到相关的w3wp.exe进程您要调试的Sharepoint网站

但是我得到了“断点不会被命中,目前没有为该文档加载符号”。我是否必须使用GACUTIL注册定制部署的解决方案dll?我是否需要在任何特定位置复制PDB文件? 我在这里错过了什么?

相关问题