服務的基本資訊
服務是兩個 VSPackages 之間的合約。 一個 VSPackage 提供一組特定的另一台 VSPackage,若要使用的介面。 Visual Studio本身就是一群提供服務給其他 VSPackages 的 VSPackages。
比方說,您可以使用 SVsActivityLog 服務,以取得 IVsActivityLog 介面,您可以用來寫入活動的記錄檔。 如需詳細資訊,請參閱 How to: 使用 [活動記錄。
服務有沒有發現。 因此,您必須知道您想要使用,服務的服務識別項 (SID),而且您必須知道它所提供的介面。 服務的參考文件提供此資訊。
提供服務的 VSPackages 會呼叫服務提供者。
提供給其他 VSPackages 的服務稱為通用的服務。
只提供給實作,VSPackage 或,它會建立任何物件,稱為本機服務的服務。
服務會視需要載入,它提供的服務要求由另一個 VSPackage 時,也就是載入服務提供者。
若要支援視需要載入,服務提供者註冊其全球的服務與Visual Studio。 如需詳細資訊,請參閱 註冊服務。
取得服務之後,使用QueryInterface (不受管理的程式碼) 或轉型 (managed 程式碼),以取得所要的介面,例如:
TryCast(GetService(GetType(SVsActivityLog)), IVsActivityLog)
GetService(typeof(SVsActivityLog)) as IVsActivityLog;
Managed 程式碼是指服務透過其型別,而不受管理的程式碼指的是由其 GUID 的服務。
當Visual Studio VSPackage 的負載,傳遞服務提供者至 VSPackage,以便讓 VSPackage 存取通用的服務。 這被指 「 設置"VSPackage。
VSPackages 可以是服務提供者所建立的物件。 例如,表單可能會要求傳送到色彩服務它的框架,可能會傳遞要求到Visual Studio。
管理的物件的深層巢狀結構,或是未設置,可能會呼叫GetGlobalService全球服務的直接存取。 如需詳細資訊,請參閱 How to: 使用 GetGlobalService。