探索可用的代理服務
代理服務可由Visual Studio或其延伸模組公開。 本文件說明如何探索 Visual Studio 所公開的代理服務。
請參閱延伸模組的檔,以探索自己的代理服務。
Visual Studio 服務類別
Visual Studio 和 Visual Studio SDK 提供許多代理服務。 這些服務都是透過 ServiceRpcDescriptor 可從類別取得 VisualStudioServices 的 可存取。
其他代理服務可能已存在,並記載特定Visual Studio功能。
類別 VisualStudioServices 會宣告各種 Visual Studio 主要或次要版本的靜態屬性。 每個屬性都會傳回類別的實例,這個實例會宣告針對代理服務公開 ServiceRpcDescriptor 的屬性。 如此一來,您就可以輕鬆地探索特定 Visual Studio 版本所支援的一組代理服務。
例如,代理解決方案服務是在Visual Studio 2019 Update 5 中引進的。 ServiceRpcDescriptor此服務的 可以從 VisualStudioServices.VS2019_5Services.SolutionService 取得,其程序代碼如下:
ServiceRpcDescriptor descriptor = Microsoft.VisualStudio.VisualStudioServices.VS2019_5.SolutionService;
版本考慮
Visual Studio 擴充功能應該使用 類別中最新的可用 VS 發行屬性 VisualStudioServices 來取用代理服務,考慮擴充功能目標的最低 Visual Studio 版本。 採用先前的解決方案服務範例,這表示以Visual Studio 2019 Update 9或更新版本為目標的延伸模組應該從 VisualStudioServices.VS2019_9 屬性取得 VisualStudioServices.VS2019_5Services.SolutionService 描述元。 讓我們將先前的範例更新為下列程式代碼:
ServiceRpcDescriptor descriptor = Microsoft.VisualStudio.VisualStudioServices.VS2019_9.SolutionService;
從 最新 VisualStudioServices 版屬性取得描述元,可確保服務 RPC 盡可能有效率,而且服務本身會提供最新的行為。 更新延伸模組以要求較新版本的Visual Studio時,請考慮檢閱類別的所有用法 VisualStudioServices ,並更新描述項的參考,以使用最新版本的屬性來符合您設定目標的Visual Studio版本。
使用 ServiceRpcDescriptor 舊版屬性 VisualStudioServices 取得的代理服務可能會模擬其行為,因為舊版,包括可能重現古怪的行為或功能限制。
以特定 Visual Studio 版本為目標並執行的 Visual Studio 延伸模組可能會要求代理服務,該服務最終會在 Live Share 連線中啟動。 在這種情況下,遠端 Visual Studio 進程可能會執行與本機 Visual Studio 進程不同的版本。 當 Live Share 主機未提供所要求版本的代理服務時,在 Live Share 會話期間,代理服務的要求可能會在 Live Share 客體上失敗。
請考慮在無法使用代理服務時納入後援方案。 如果 Live Share 主機是舊版的 Visual Studio,此後援方案可能包含從 舊版的 屬性 VisualStudioServices 要求代理服務,因為如果 Live Share 主機是舊版的 Visual Studio,則可能會成功。 請記住,這樣做時,服務介面的某些成員可能無法在服務實作本身上使用。
代理服務 可能會在出貨后,將成員 新增至其服務介面。 請注意介面中每個成員的 IntelliSense 檔,以查看該成員上是否提及最低必要服務版本。
嘗試叫用遠端服務實際上未實作的成員會擲回 RemoteMethodNotFoundException。