使用可能な仲介型サービスの検出
仲介型サービスは、Visual Studio またはその拡張機能によって公開できます。 このドキュメントでは、Visual Studio によって公開される仲介型サービスを検出する方法について説明します。
拡張機能のドキュメントを参照して、独自の仲介型サービスを検出します。
Visual Studio のサービス クラス
Visual Studio と Visual Studio SDK では、多くの仲介型サービスが提供されます。 これらのサービスはそれぞれ、多くの場合 VisualStudioServices クラスから取得できる ServiceRpcDescriptor を介してアクセスできます。
他の仲介型サービスが存在し、特定の 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 拡張機能は、拡張機能がターゲットとする Visual Studio の最小バージョンを考慮して、VisualStudioServices クラスから利用可能な最新の VS リリースのプロパティを使用して仲介型サービスを使用する必要があります。 前のソリューション サービスの例を見ると、これは、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 バージョンと一致するように最新バージョンのプロパティを使用することを検討してください。
VisualStudioServices で以前のバージョンのプロパティから ServiceRpcDescriptor を使用して取得された仲介型サービスでは、その以前のバージョンでの動作をエミュレートできます。これによって、風変わりな動作や機能の制限が再現される可能性があります。
特定のバージョンの Visual Studio をターゲットにして実行される Visual Studio 拡張機能では、Live Share 接続全体でアクティブ化される仲介型サービスが要求される場合があります。 このような場合、リモート Visual Studio プロセスでは、ローカル Visual Studio プロセスとは異なるバージョンを実行している可能性があります。 Live Share ホストが要求されたバージョンの仲介型サービスを提供していない場合、Live Share セッション中に、仲介型サービスの要求が Live Share ゲストで失敗する可能性があります。
仲介型サービスが利用できない場合の予備プランを含めることを検討してください。 この予備プランには、Live Share ホストが以前のバージョンの Visual Studio の場合に成功する可能性があるため、VisualStudioServices 上の以前のバージョンのプロパティから再度仲介型サービスを要求することが含まれる場合があります。 その場合は、サービス インターフェイスの一部のメンバーがサービス実装自体で使用できない可能性があることに注意してください。
仲介型サービスでは、出荷後もサービス インターフェイスにメンバーを追加できます。 インターフェイスの各メンバーの IntelliSense ドキュメントに注意して、そのメンバーに最低限必要なサービス バージョンが記載されているかどうかを確認してください。
リモート サービスで実際には実装されていないメンバーを呼び出そうとすると、RemoteMethodNotFoundException がスローされます。