疑難排解功能擴充
您可以建立自己的功能擴充,例如自訂的程式碼分析規則、資料庫單元測試條件、資料產生器、重構類型、建置參與者和部署參與者。 當安裝這些功能擴充時,可能會發生問題而讓您的擴充無法成功載入。 這個主題說明最常見的問題和處理這些問題需執行的步驟。 如需有關如何安裝和註冊功能擴充的詳細資訊,請參閱 HOW TO:註冊和管理功能擴充。
功能擴充未載入時的首先步驟
安裝和註冊功能擴充之後,您必須重新啟動 Visual Studio。 在重新啟動 Visual Studio 之後應執行的第一個步驟是顯示 [錯誤清單]。 如果無法載入一個或多個擴充,則會在 [錯誤清單] 中顯示錯誤。 在 [檢視] 功能表上,按一下 [錯誤清單]。 如果顯示如下錯誤,則沒有正確載入擴充:
Failed to load extension MyBuildContributor.ModelStatisticsReport. Exception message: Could not load type 'MyBuildContributor.ModelStatisticsReport' from assembly 'MyBuildContributor, Version 1.0.0.0, Culture=neutral, PublicKeyToken=34fdfd7e8ae7c7a8'.
在某些情況下,例如若找不到 .extensions.xml 檔案,則無法載入擴充,但不會顯示錯誤。
診斷擴充無法載入的原因
擴充無法載入的原因可能包括以下各項:
擴充檔案包含一個或多個錯誤
擴充組件尚未簽章
找不到 extensions.xml 檔案
找不到擴充組件
擴充中的程式碼沒有擴充正確的類別
擴充中的類別或成員沒有正確的屬性
擴充檔案包含一個或多個錯誤
擴充無法載入的最常見原因是 Extensions.XML 檔案中具有下列一個或多個錯誤:
錯誤的型別名稱
錯誤的組件名稱
錯誤的版本號碼
錯誤的公開金鑰語彙基元
如需如何編寫 extensions.xml 檔案的詳細資訊,請參閱 HOW TO:註冊和管理功能擴充。
擴充組件尚未簽章
如果擴充組件尚未簽章,則 Visual Studio 無法載入它。 若要簽章擴充組件,請遵循下列步驟:
若要簽署和建置組件
開啟包含擴充專案的方案。
在 [專案] 功能表中,按一下 [MyExtensionProject 屬性],其中 MyExtensionProject 是包含您要簽章之功能擴充專案的名稱。
按一下 [簽署] 索引標籤。
按一下 [簽署組件]。
在 [選擇強式名稱金鑰檔] 中,按一下 [<新增>]。
在 [建立強式名稱金鑰] 對話方塊的 [金鑰檔名稱] 中,輸入 MyRefKey。
(選擇性) 您可以為強式名稱金鑰檔指定密碼。
按一下 [確定]。
在 [檔案] 功能表上按一下 [全部儲存]。
在 [建置] 功能表上,按一下 [建置方案]。
接下來,您必須安裝並註冊組件,以便在部署資料庫專案時可以載入它。
找不到 Extensions.XML 檔案
如果沒有提供 XML 檔案以使用 Visual Studio 註冊擴充,則將不會載入擴充。 通常,您可將 MyAssembly.Extensions.XML 複製到 %Program Files%\Microsoft Visual Studio 10.0\VSTSDB\Extensions\MyExtensions 資料夾,其中 MyAssembly 是擴充的名稱。
注意事項 |
---|
建議您不要直接將 XML 檔案複製到 [Program Files]\Microsoft Visual Studio 10.0\VSTSDB\Extensions 資料夾中。 如果改用子資料夾,可以防止不小心變更 Visual Studio 隨附的其他檔案。 |
如需如何建立 Extensions.XML 檔案的詳細資訊,請參閱 HOW TO:註冊和管理功能擴充。
找不到擴充組件
如果沒有將擴充組件複製到 [擴充] 資料夾,則將不會載入擴充。 通常,您可將 MyAssembly.dll 和 MyAssembly.pdb 檔案複製到 %Program Files%\Microsoft Visual Studio 10.0\VSTSDB\Extensions\MyExtensions 資料夾,其中 MyAssembly 是擴充的名稱。
注意事項 |
---|
建議您不要直接將 XML 檔案複製到 [Program Files]\Microsoft Visual Studio 10.0\VSTSDB\Extensions 資料夾中。 如果改用子資料夾,可以防止不小心變更 Visual Studio Premium 隨附的其他檔案。 |
擴充中的程式碼沒有擴充正確的類別
針對每個型別的功能擴充,您的主要類別會擴充特定的基底類別。 如果不是衍生自正確的基底類別,則擴充無法正確運行。 如需詳細資訊,請參閱對應的逐步解說。
擴充中的類別或成員沒有正確的屬性
針對每個型別的功能擴充,類別必須具有可宣告擴充與其相容之型別資料庫結構描述提供者的屬性。 此外,部分擴充在一個或多個類別方法上需要其他屬性。 如需詳細資訊,請參閱對應的逐步解說。