Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 如何通过Visual studio调试Sharepoint解决方案/功能?_Visual Studio_Sharepoint_Debugging_Moss - Fatal编程技术网

Visual studio 如何通过Visual studio调试Sharepoint解决方案/功能?

Visual studio 如何通过Visual studio调试Sharepoint解决方案/功能?,visual-studio,sharepoint,debugging,moss,Visual Studio,Sharepoint,Debugging,Moss,最近,我尝试通过wspbuilder实用程序将一个Web部件安装到Sharepoint站点。我已经创建、构建并部署了一个项目到12个蜂巢。之后,通过Cental管理网站安装解决方案并在网站集中激活 我只是想知道如何调试复杂的功能/解决方案?由于两个进程(构建、部署和激活)完全独立,如何将进程附加到辅助进程?首先,您需要打开浏览器并导航到相关的SharePoint网站。然后,在Visual Studio中,转到调试-->附加到进程,并找到与要调试的Sharepoint网站关联的w3wp.exe进程

最近,我尝试通过wspbuilder实用程序将一个Web部件安装到Sharepoint站点。我已经创建、构建并部署了一个项目到12个蜂巢。之后,通过Cental管理网站安装解决方案并在网站集中激活


我只是想知道如何调试复杂的功能/解决方案?由于两个进程(构建、部署和激活)完全独立,如何将进程附加到辅助进程?

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

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

有时候,确定要附加到哪个w3wp进程有点困难。尝试将以下内容添加到代码中以进入调试器:

System.Diagnostics.Debugger.Break()


正如Muhimbi所建议的,这在某些情况下实际上非常有用。假设您希望调试自定义代码(例如,feature_deactivating event),但它可能是用stsadm而不是浏览器调用的。(例如,当功能隐藏在UI中时,您必须使用stsadm来停用功能)。使用stsadm时,您无法附加到cmd.exe,因为这是一个单独的过程。如果键入命令并按enter键,然后找到要附加到的stsadm.exe进程的id,则为时已晚。在这种情况下,上面的命令是最简单和最好的解决方案

我尝试了这里提到的步骤

转到调试-->附加到进程,并查找与要调试的Sharepoint网站关联的w3wp.exe进程

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

所以使用System.Diagnostics.Debugger.Break();意味着您不必确定哪个w3wp.exe进程与Sharepoint网站关联?是否有其他方法可以确定这一点?我是否必须处于调试模式才能使用它?我相信是这样,但不是100%确定。我只在运行调试版本时使用它。您可以使用Abhijit Jana在以下博文中的建议来确定要附加到哪个Sharepoint进程:
System.Diagnostics.Debugger.Break()