Freigeben über


Ermitteln verfügbarer vermittelter Dienste

Brokered Services können von Visual Studio oder deren Erweiterungen verfügbar gemacht werden. In diesem Dokument wird beschrieben, wie Vermittelte Dienste ermittelt werden, die von Visual Studio verfügbar gemacht werden.

Lesen Sie die Dokumentation einer Erweiterung, um ihre eigenen brokerierten Dienste zu ermitteln.

Visual Studio Services-Klasse

Visual Studio und das Visual Studio SDK bieten viele brokerierte Dienste. Diese Dienste sind jeweils über eine ServiceRpcDescriptor zugängliche, die oft aus der VisualStudioServices Klasse abgerufen werden kann.

Andere brokerierte Dienste können vorhanden sein und mit bestimmten Visual Studio-Features dokumentiert werden.

Die VisualStudioServices Klasse deklariert eine statische Eigenschaft für verschiedene Haupt- oder Nebenversionen von Visual Studio. Jede dieser Eigenschaften gibt eine Instanz einer Klasse zurück, die Eigenschaften deklariert, die einen ServiceRpcDescriptor für einen Brokerdienst verfügbar machen. Auf diese Weise können Sie den Satz von vermittelten Diensten, die von einer bestimmten Version von Visual Studio unterstützt werden, leicht ermitteln.

Beispielsweise wurde der brokerierte Lösungsdienst in Visual Studio 2019 Update 5 eingeführt. Der ServiceRpcDescriptor für diesen Dienst kann aus VisualStudioServices.VS2019_5Services.SolutionService mit Code wie folgt abgerufen werden:

ServiceRpcDescriptor descriptor = Microsoft.VisualStudio.VisualStudioServices.VS2019_5.SolutionService;

Überlegungen zur Version

Eine Visual Studio-Erweiterung sollte einen brokerierten Dienst mit der neuesten verfügbaren VS-Release-Eigenschaft aus der VisualStudioServices Klasse verwenden, wobei die mindest erforderliche Version von Visual Studio berücksichtigt wird, auf die die Erweiterung ausgerichtet ist. Im vorherigen Lösungsdienstbeispiel würde dies bedeuten, dass eine Erweiterung, die auf Visual Studio 2019 Update 9 oder höher ausgerichtet ist, den VisualStudioServices.VS2019_5Services.SolutionService-Deskriptor aus der VisualStudioServices.VS2019_9-Eigenschaft abrufen sollte. Lassen Sie uns das vorherige Beispiel mit dem folgenden Code aktualisieren:

ServiceRpcDescriptor descriptor = Microsoft.VisualStudio.VisualStudioServices.VS2019_9.SolutionService;

Durch den Erwerb des Deskriptors aus der neuesten versionierten Eigenschaft VisualStudioServices wird sichergestellt, dass der Dienst-RPC so effizient wie möglich ist und der Dienst selbst das neueste Verhalten bereitstellt. Wenn Sie Ihre Erweiterung so aktualisieren, dass eine neuere Version von Visual Studio erforderlich ist, sollten Sie alle Verwendung der VisualStudioServices Klasse überprüfen und Verweise auf Deskriptoren aktualisieren, um die neuesten Versionseigenschaften zu verwenden, um mit der Visual Studio-Version übereinzugleichen, die Sie verwenden möchten.

Ein vermittelter Dienst, der unter Verwendung einer ServiceRpcDescriptor älteren versionierten Eigenschaft VisualStudioServices erworben wurde, emulieren möglicherweise sein Verhalten, wie es in dieser älteren Version war, einschließlich möglicherweise reproduzierbarem verhalten oder Featurebeschränkungen.

Eine Visual Studio-Erweiterung, die auf eine bestimmte Version von Visual Studio abzielt und ausgeführt wird, kann einen brokerierten Dienst anfordern, der in einer Live-Freigabeverbindung aktiviert wird. In solchen Fällen kann der Visual Studio-Remoteprozess eine andere Version als der lokale Visual Studio-Prozess ausführen. Eine Anforderung für einen brokerierten Dienst schlägt möglicherweise während einer Live Share-Sitzung bei einem LiveFreigabe-Gast fehl, wenn der Live Share-Host diesen vermittelten Dienst der angeforderten Version nicht anbietet.

Erwägen Sie, einen Fallbackplan für den Fallback zu verwenden, wenn der brokerierte Dienst nicht verfügbar ist. Dieser Fallbackplan kann das Erneute Anfordern des brokerierten Diensts aus einer älteren versionsierten Eigenschaft VisualStudioServices umfassen, da dies erfolgreich sein kann, wenn der Live-Freigabehost eine ältere Version von Visual Studio ist. Denken Sie daran, dass einige Mitglieder der Dienstschnittstelle möglicherweise nicht in der Dienstimplementierung selbst verfügbar sind.

Ein vermittelter Dienst kann mitglieder zur Dienstschnittstelle hinzufügen, auch nach dem Versand. Achten Sie auf die IntelliSense-Dokumentation auf jedem Mitglied der Schnittstelle, um festzustellen, ob für dieses Mitglied eine mindestens erforderliche Dienstversion Erwähnung wird.

Ein Versuch, ein Mitglied aufzurufen, das der Remotedienst nicht tatsächlich implementiert, löst einen .RemoteMethodNotFoundException

Siehe auch