針對 SharePoint 解決方案進行偵錯
您可以使用 Visual Studio 偵錯工具對 SharePoint 解決方案進行偵錯。 當您開始偵錯時,Visual Studio 會將專案檔部署到 SharePoint 伺服器,然後在網頁瀏覽器中開啟 SharePoint 網站的執行個體。 下列章節會說明如何在 Visual Studio 中偵錯 SharePoint 應用程式。
啟用偵錯
當您第一次在 Visual Studio 中偵錯 SharePoint 解決方案時,對話方塊會警示您 web.config 檔案未設定為啟用偵錯。 (當您安裝 SharePoint 伺服器時,會建立 web.config 檔案。如需詳細資訊,請參閱 使用 Web.config 檔案。)對話方塊可讓您選擇執行專案而不進行偵錯或修改 web.config 檔案以啟用偵錯。 如果您選擇第一個選項,專案將會正常執行。 如果您選擇第二個選項,則 web.config 檔案會設定為:
開啟呼叫堆疊 (
CallStack="true"
)在 Visual Studio 中停用自訂錯誤 (
<customErrors mode="Off" />
)啟用編譯偵錯 (
<compilation debug="true">
)產生的 web.config 檔案如下:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<configuration>
...
<SharePoint>
<SafeMode MaxControls="200"
CallStack="true"
DirectFileDependencies="10"
TotalFileDependencies="50"
AllowPageLevelTrace="false">
...
</SafeMode>
...
</SharePoint>
<system.web>
...
<customErrors mode="Off" />
...
<compilation debug="true">
...
</compilation>
...
</system.web>
...
</configuration>
若要反轉變更並停用偵錯,請在 web.config 檔案中變更下列 XML:
關閉呼叫堆疊 (
CallStack="false"
)在 Visual Studio 中啟用自訂錯誤 (
<customErrors mode="On" />
)停用編譯偵錯 (
<compilation debug="false">
)
F5 偵錯和部署流程
當您以偵錯模式執行 SharePoint 專案時,SharePoint 部署流程會執行下列工作:
執行可自訂的預先部署命令。
使用 MSBuild 命令建立網路方案套件 (.wsp) 檔案。 .wsp 檔案包含所有必要的檔案和功能。 如需詳細資訊,請參閱 解決方案概觀。
如果 SharePoint 解決方案是伺服器陣列解決方案,請回收指定網站 URL 的 IIS 應用程式集區。 此步驟會釋放 IIS 背景工作流程鎖定的檔案。
如果套件的舊版已經存在,請撤銷 .wsp 檔案中的舊版功能和檔案。 此步驟會停用功能、解除安裝解決方案套件,然後刪除 SharePoint 伺服器上的解決方案套件。
在 .wsp 檔案中安裝功能和檔案目前的版本。 此步驟會新增解決方案並將它安裝到 SharePoint 伺服器上。
針對工作流程,安裝工作流程組件。 您可以使用 組件位置 屬性來變更其位置。
如果範圍是網站或網路,則會在 SharePoint 中啟動專案的功能。 不會啟動伺服器陣列和 WebApplication 範圍中的功能。
針對工作流程,將工作流程與您在 SharePoint 自訂精靈 中選取的 SharePoint 文件庫、清單或網站產生關聯。
注意
只有在您在精靈中選取 [自動關聯工作流程] 時,才會發生此關聯。
執行可自訂的預先部署命令。
將 Visual Studio 偵錯工具連結至 Windows SharePoint Services 流程 (w3wp.exe)。 如果專案類型可讓您變更 [沙箱化解決方案] 屬性,且其值設定為 True,則偵錯工具會連結至不同的流程 (SPUCWorkerProcess.exe)。 如需詳細資訊,請參閱 沙箱化解決方案考量。
如果 SharePoint 解決方案是伺服器陣列解決方案,請啟動 JavaScript 偵錯工具。
在網頁瀏覽器中顯示適當的文件庫、清單或網站頁面。
Visual Studio 會在完成每個工作之後,在 [輸出] 視窗中顯示狀態訊息。 如果工作無法完成,Visual Studio 會在 [錯誤清單] 視窗中顯示錯誤訊息。
SharePoint 專案功能
功能是可攜式且模組化的功能單位,可簡化網站定義的網站修改。 它也是 Windows SharePoint Services (WSS) 元素的套件,可針對特定範圍啟用,並可協助使用者完成特定目標或工作。 範本會部署為功能。
當您以偵錯模式執行專案時,部署流程會在 %COMMONPROGRAMFILES%\Microsoft Shared\web server extensions\14\TEMPLATE\FEATURES 的 功能 目錄中建立資料夾。 功能名稱的格式為專案名稱_Featurex, 例如 TestProject_Feature1。
功能目錄中的解決方案資料夾包含 功能定義 檔案和 工作流程定義 檔案。 功能定義檔案 (Feature.xml) 會描述專案 [功能] 中 的檔案。專案定義檔案 (Elements.xml) 會描述專案範本。 Elements.xml 可以在 [方案總管] 中找到,但建立解決方案套件時會產生 Feature.xml。 如需這些檔案的詳細資訊,請參閱 SharePoint 專案與專案項目範本。
偵錯工作流程
當您偵錯工作流程專案時,Visual Studio 會將工作流程範本 (視其類型而定) 新增至程式庫或清單。 然後,您可以手動啟動工作流程範本,或藉由新增或更新項目。 然後,您可以使用 Visual Studio 來偵錯工作流程。
注意
如果您新增其他組件的參考,請確定這些組件已安裝在全域組件快取中 (GAC)。 否則,工作流程解決方案將會失敗。 如需如何安裝組件的詳細資訊,請參閱 手動開始文件或項目的工作流程。
不過,部署流程不會啟動工作流程。 您必須從 SharePoint 網站啟動工作流程。 您也可以使用 Microsoft Office Word 2010 之類的用戶端應用程式,或使用個別伺服器端程式碼來啟動工作流程。 使用 SharePoint 自訂精靈 中指定的其中一種方法。
例如,如果您指定可以手動啟動工作流程,請直接從程式庫或清單中的項目啟動工作流程。 如需如何手動開始工作流程的詳細資訊,請參閱 手動開始文件或項目的工作流程。
偵錯功能事件接收器
根據預設,當您執行 Visual Studio SharePoint 應用程式時,會自動為您在 SharePoint 伺服器上啟用其功能。 不過,這會導致偵錯功能事件接收器時發生問題,因為當 Visual Studio 啟動功能時,它會在與偵錯工具不同的流程中執行。 這表示某些偵錯功能,例如中斷點,將無法正常運作。
若要停用 SharePoint 中功能的自動啟用,並允許適當偵錯功能事件接收者,請在偵錯之前,將專案的 [使用中部署設定] 屬性的值設定為 [未啟用]。 接著,您在 Visual Studio 中開始對 SharePoint 應用程式進行偵錯之後,請手動啟用 SharePoint 中的功能。 若要啟用功能,請在 SharePoint 中開啟 [網站動作] 功能表,依序選擇 [網站設定]、[管理網站功能] 連結和功能旁的 [啟動] 按鈕,按照一般方式繼續偵錯。
啟用增强的偵錯資訊
由於 Visual Studio 流程 (devenv.exe)、Visual Studio SharePoint 主機流程 (vssphost4.exe)、SharePoint 和 WCF 層之間有時的互動很複雜,因此診斷建置、部署等時發生的錯誤可能是一項挑戰。 為了協助您解決這類錯誤,您可以啟用增強的偵錯資訊。 若要這樣做,請移至 Windows 登錄中的下列登錄機碼:
HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\11.0\SharePointTools
如果 "EnableDiagnostics" REG_DWORD 值不存在,請手動建立該值。 將 "EnableDiagnostics" 值設定為 "1"。
將此索引鍵值設定為 1 會導致每當您在 Visual Studio 中執行時專案系統發生錯誤時,[輸出] 視窗中顯示堆疊追蹤資訊。 若要停用增強型偵錯資訊,請將 EnableDiagnostics 設定回 0,或刪除該值。
如需其他 SharePoint 登錄機碼的詳細資訊,請參閱 Visual Studio 中 SharePoint 工具的偵錯延伸模組。