共用方式為


偵錯 Visual Studio 中 SharePoint 工具的擴充功能

您可以在 Visual Studio 的實驗執行個體或一般執行個體中,偵錯 SharePoint 工具擴充功能。 如果您需要對擴充功能的行為進行疑難排解,也可以藉由修改登錄值,來顯示更多錯誤資訊,以及設定 Visual Studio 執行 SharePoint 命令的方式。

在 Visual Studio 的實驗執行個體中偵錯擴充功能

若要保護您的 Visual Studio 開發環境免遭未經測試之擴充功能的意外毀損,Visual Studio SDK 提供一個稱為「實驗執行個體」(Experimental Instance) 的替代 Visual Studio 執行個體,您可以使用實驗執行個體來安裝和測試擴充功能。 您可以使用 Visual Studio 的一般執行個體來開發新的擴充功能,但是在實驗執行個體中偵錯和執行它們。 如需詳細資訊,請參閱 Experimental Instance of Visual Studio

如果您使用 VSIX 專案來部署擴充功能,且 VSIX 專案是您方案中的啟動專案,則 Visual Studio 會在您偵錯方案時自動於實驗執行個體中安裝和執行擴充功能。 啟動專案是指偵錯含有多個專案的方案時所啟動的專案。 如需使用 VSIX 專案部署擴充功能的詳細資訊,請參閱部署 Visual Studio 中 SharePoint 工具的擴充功能。 如需啟動專案的詳細資訊,請參閱 HOW TO:選擇啟動專案

如需示範如何在 Visual Studio 的實驗執行個體中偵錯各種擴充功能類型的範例,請參閱下列逐步解說:

在 Visual Studio 的一般執行個體中偵錯擴充功能

如果您要在 Visual Studio 的一般執行個體中偵錯擴充功能專案,請首先在該一般執行個體中安裝擴充功能。 接著,將偵錯工具附加至第二個 Visual Studio 程序。 完成之後,可以移除擴充功能,以便開發電腦不會再載入該擴充功能。

若要安裝擴充功能

  1. 關閉 Visual Studio 的所有執行個體。

  2. 在擴充功能專案的建置輸出資料夾中,按兩下 .vsix 檔案。

  3. 在 [Visual Studio 擴充功能安裝程式] 對話方塊中,選取您要安裝擴充功能的 Visual Studio 版本,然後按一下 [安裝]。

    Visual Studio 會將擴充檔安裝至 %UserProfile%\AppData\Local\Microsoft\VisualStudio\10.0\Extensions\author name\extension name\version。 這個路徑中的最後三個資料夾是從擴充功能之 extension.vsixmanifest 檔案的 Author、Name 和 Version 項目建構而成。

  4. Visual Studio 安裝這個擴充功能後,請按一下 [關閉]。

若要偵錯擴充功能

  1. 以系統管理員權限啟動 Visual Studio,並開啟擴充功能專案。 下列步驟將 Visual Studio 的這個執行個體當做「第一個執行個體」(First Instance)。

  2. 以系統管理員權限啟動 Visual Studio 的另一個執行個體。 下列步驟將 Visual Studio 的這個執行個體當做「第二個執行個體」(Second Instance)。

  3. 切換至 Visual Studio 的第一個執行個體。

  4. 在 [偵錯] 功能表上,按一下 [附加至處理序]。

  5. 按一下 [可使用的處理序] 清單中的 devenv.exe。 這個項目參考 Visual Studio 的第二個執行個體,這是您要在其中對專案擴充功能進行偵錯的執行個體。

  6. 按一下 [附加]。

    Visual Studio 會以偵錯模式執行擴充功能專案。

  7. 切換至 Visual Studio 的第二個執行個體。

  8. 建立會載入擴充功能的新 SharePoint 專案。 例如,如果您對清單定義專案項目的擴充功能進行偵錯,請建立 [清單定義] 專案。

  9. 執行測試擴充功能程式碼所需的任何步驟。

  10. 完成對擴充功能的偵錯時,關閉 Visual Studio 的第二個執行個體。

若要移除擴充功能

  1. 在 Visual Studio 中的 [工具] 功能表中,按一下 [擴充管理員]。

    [擴充管理員] 對話方塊隨即開啟。

  2. 在擴充功能清單中,按一下擴充功能的名稱,然後按一下 [解除安裝]。

  3. 在所顯示的對話方塊中,按一下 [],確認您要解除安裝擴充功能。

  4. 按一下 [立即重新啟動] 完成解除安裝。

偵錯 SharePoint 命令

如果您要偵錯 SharePoint 工具擴充功能中的 SharePoint 命令,則必須將偵錯工具附加至 vssphost4.exe 處理序。 這是執行 SharePoint 命令的 64 位元主機處理序。 如需 SharePoint 命令和 vssphost4.exe 的詳細資訊,請參閱呼叫 SharePoint 物件模型

若要將偵錯工具附加至 vssphost4.exe 處理序

  1. 依照前述指示,開始在 Visual Studio 的實驗執行個體或 Visual Studio 的一般執行個體中偵錯您的擴充功能。

  2. 在您執行偵錯工具的 Visual Studio 實驗執行個體中,按一下 [偵錯] 功能表上的 [附加至處理序]。

  3. 按一下 [可使用的處理序] 清單中的 vssphost.exe。

    注意事項注意事項

    如果 vssphost.exe 未出現在清單中,您必須在執行擴充功能的 Visual Studio 執行個體中啟動 vssphost4.exe 處理序。 通常這麼做的方法,是執行一個動作,讓 Visual Studio 連接至開發電腦上的 SharePoint 網站。 例如,當您在 [伺服器總管] 視窗中展開 [SharePoint 連接] 節點下的網站連接節點 (一個顯示網站 URL 的節點),或是將特定 SharePoint 專案項目 (例如 [清單執行個體] 或 [事件接收器] 項目) 加入至 SharePoint 專案時,Visual Studio 即會啟動 vssphost4.exe。

  4. 按一下 [附加]。

  5. 在要偵錯的 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 啟動時,是否立即顯示讓您將偵錯工具附加至 vssphost4.exe 的對話方塊。 如果 vssphost.exe 啟動後會立即執行您所要偵錯的命令,而您沒有足夠的時間在此命令執行前手動附加偵錯工具,這會很有用。 若要顯示對話方塊,vssphost4.exe 會在啟動時呼叫 Debugger.Break 方法。

若要啟用這個行為,請將此值設定為 1。 若要關閉這個行為,請將此值設定為 0,或刪除此值。

如果您將此值設定為 1,您可能也需要增加 HostProcessStartupTimeout 值,以便有足夠的時間在 Visual Studio 預期 vssphost4.exe 指出它已順利啟動之前附加偵錯工具。

ChannelOperationTimeout

指定 Visual Studio 等待執行 SharePoint 命令所需時間 (以秒為單位) 的 REG_DWORD。 如果未及時執行命令,則會擲回 SharePointConnectionException

預設為 120 秒。

HostProcessStartupTimeout

指定 Visual Studio 等待 vssphost4.exe 發出成功啟動信號所需時間 (以秒為單位) 的 REG_DWORD。 如果 vssphost4.exe 未及時發出成功啟動的信號,則會擲回 SharePointConnectionException

預設為 60 秒。

MaxReceivedMessageSize

指定 Visual Studio 與 vssphost4.exe 之間所傳遞之 WCF 訊息允許的大小上限 (以位元組為單位) 的 REG_DWORD。

預設為 1,048,576 位元組 (1 MB)。

MaxStringContentLength

指定 Visual Studio 與 vssphost4.exe 之間所傳遞之字串允許的大小上限 (以位元組為單位) 的 REG_DWORD。

預設為 1,048,576 位元組 (1 MB)。

請參閱

其他資源

擴充 Visual Studio 中的 SharePoint 工具

部署 Visual Studio 中 SharePoint 工具的擴充功能