2010-04-05 101 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文件? 我在這裏錯過了什麼?

相關問題