microsoft / VSExtensibility

A repo for upcoming changes to extensibility in Visual Studio, the new extensibility model, and language server protocol.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Unable to use VisualStudio.Extensibility from existing VSSDK extensions

awschristou opened this issue · comments

I was following the documentation for Use VisualStudio.Extensibility from existing VSSDK extensions to access the new Extensibility model from an existing VS SDK based extension. When I try to get the VisualStudioExtensibility service (my sample code), I get an exception "The VisualStudioExtensibility service is unavailable."

I tried this using Visual Studio version 17.9.5, and with version 17.9.2092 of NuGet packages Microsoft.VisualStudio.Extensibility, Microsoft.VisualStudio.Extensibility.Sdk, and Microsoft.VisualStudio.Extensibility.Build

Hi @awschristou, would you be able to enable all exceptions in the debugger (disabling Just My Code) before that GetService line and see what inner exception is thrown?

Just as an FYI, using VisualStudioExtensibility in that way will provide very limited API support since it wouldn't be running in the context of an extension.

We recommend the earlier approach listed https://learn.microsoft.com/en-us/visualstudio/extensibility/visualstudio.extensibility/get-started/in-proc-extensions?view=vs-2022#requiresinprocesshosting-property starting with a class inheriting from Extension

Thanks

Hi @BertanAygun , here is the exception message:

Could not load file or assembly 'Microsoft.VisualStudio.Extensibility.EditorHostService, Version=17.9.145.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.

In case it helps, here is some additional information from the Exception:

Stack trace
   at Microsoft.VisualStudio.Extensibility.VSPackage.VisualStudioExtensibilityPackage.<CreateLocalServiceProviderAsync>d__7.MoveNext()
   at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine)
   at Microsoft.VisualStudio.Extensibility.VSPackage.VisualStudioExtensibilityPackage.CreateLocalServiceProviderAsync()
   at Microsoft.VisualStudio.Threading.AsyncLazy`1.<>c__DisplayClass16_0.<<GetValueAsync>b__0>d.MoveNext()
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.VisualStudio.Extensibility.VSPackage.VisualStudioExtensibilityPackage.<CreateVisualStudioExtensibilityInstanceAsync>d__5.MoveNext()
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.VisualStudio.Shell.AsyncPackage.<>c__DisplayClass29_0.<<AddService>b__1>d.MoveNext()
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.VisualStudio.Threading.AwaitExtensions.ExecuteContinuationSynchronouslyAwaiter`1.GetResult()
   at Microsoft.VisualStudio.Threading.AsyncLazy`1.<>c__DisplayClass16_0.<<GetValueAsync>b__0>d.MoveNext()
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at Microsoft.VisualStudio.Services.VsTask.RethrowException(AggregateException e)
   at Microsoft.VisualStudio.Services.VsTask.InternalGetResult(Boolean ignoreUIThreadCheck)
   at Microsoft.VisualStudio.Services.AsyncQueryService.AsyncServiceProvider.<GetServiceByGuidThrowingAsync>d__23.MoveNext()
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.VisualStudio.Shell.ServiceExtensions.<GetServiceAsync>d__3`2.MoveNext()
Fusion log
=== Pre-bind state information ===
LOG: DisplayName = Microsoft.VisualStudio.Extensibility.EditorHostService, Version=17.9.145.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 (Fully-specified)
LOG: Appbase = file:///C:/Program Files/Microsoft Visual Studio/2022/Professional/Common7/IDE/
LOG: Initial PrivatePath = NULL
Calling assembly : Microsoft.VisualStudio.Extensibility.VSPackage, Version=17.9.2093.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a.
===
LOG: This bind starts in LoadFrom load context.
WRN: Native image will not be probed in LoadFrom context. Native image will only be probed in default load context, like with Assembly.Load().
LOG: Using application configuration file: C:\Users\XXXXX\AppData\Local\Temp\devB20D.tmp
LOG: Using host configuration file: 
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config.
LOG: Post-policy reference: Microsoft.VisualStudio.Extensibility.EditorHostService, Version=17.9.145.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft Visual Studio/2022/Professional/Common7/IDE/Microsoft.VisualStudio.Extensibility.EditorHostService.DLL.
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft Visual Studio/2022/Professional/Common7/IDE/Microsoft.VisualStudio.Extensibility.EditorHostService/Microsoft.VisualStudio.Extensibility.EditorHostService.DLL.
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft Visual Studio/2022/Professional/Common7/IDE/PublicAssemblies/Microsoft.VisualStudio.Extensibility.EditorHostService.DLL.
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft Visual Studio/2022/Professional/Common7/IDE/PublicAssemblies/Microsoft.VisualStudio.Extensibility.EditorHostService/Microsoft.VisualStudio.Extensibility.EditorHostService.DLL.
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft Visual Studio/2022/Professional/Common7/IDE/PrivateAssemblies/Microsoft.VisualStudio.Extensibility.EditorHostService.DLL.
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft Visual Studio/2022/Professional/Common7/IDE/PrivateAssemblies/Microsoft.VisualStudio.Extensibility.EditorHostService/Microsoft.VisualStudio.Extensibility.EditorHostService.DLL.
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft Visual Studio/2022/Professional/Common7/IDE/CommonExtensions/Microsoft/TestWindow/Microsoft.VisualStudio.Extensibility.EditorHostService.DLL.
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft Visual Studio/2022/Professional/Common7/IDE/CommonExtensions/Microsoft/TestWindow/Microsoft.VisualStudio.Extensibility.EditorHostService/Microsoft.VisualStudio.Extensibility.EditorHostService.DLL.
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft Visual Studio/2022/Professional/Common7/IDE/CommonExtensions/Platform/Debugger/Microsoft.VisualStudio.Extensibility.EditorHostService.DLL.
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft Visual Studio/2022/Professional/Common7/IDE/CommonExtensions/Platform/Debugger/Microsoft.VisualStudio.Extensibility.EditorHostService/Microsoft.VisualStudio.Extensibility.EditorHostService.DLL.
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft Visual Studio/2022/Professional/Common7/IDE/PrivateAssemblies/DataCollectors/Microsoft.VisualStudio.Extensibility.EditorHostService.DLL.
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft Visual Studio/2022/Professional/Common7/IDE/PrivateAssemblies/DataCollectors/Microsoft.VisualStudio.Extensibility.EditorHostService/Microsoft.VisualStudio.Extensibility.EditorHostService.DLL.
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft Visual Studio/2022/Professional/Common7/IDE/PrivateAssemblies/DataCollectors/x64/Microsoft.VisualStudio.Extensibility.EditorHostService.DLL.
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft Visual Studio/2022/Professional/Common7/IDE/PrivateAssemblies/DataCollectors/x64/Microsoft.VisualStudio.Extensibility.EditorHostService/Microsoft.VisualStudio.Extensibility.EditorHostService.DLL.
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft Visual Studio/2022/Professional/Common7/IDE/Microsoft.VisualStudio.Extensibility.EditorHostService.EXE.
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft Visual Studio/2022/Professional/Common7/IDE/Microsoft.VisualStudio.Extensibility.EditorHostService/Microsoft.VisualStudio.Extensibility.EditorHostService.EXE.
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft Visual Studio/2022/Professional/Common7/IDE/PublicAssemblies/Microsoft.VisualStudio.Extensibility.EditorHostService.EXE.
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft Visual Studio/2022/Professional/Common7/IDE/PublicAssemblies/Microsoft.VisualStudio.Extensibility.EditorHostService/Microsoft.VisualStudio.Extensibility.EditorHostService.EXE.
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft Visual Studio/2022/Professional/Common7/IDE/PrivateAssemblies/Microsoft.VisualStudio.Extensibility.EditorHostService.EXE.
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft Visual Studio/2022/Professional/Common7/IDE/PrivateAssemblies/Microsoft.VisualStudio.Extensibility.EditorHostService/Microsoft.VisualStudio.Extensibility.EditorHostService.EXE.
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft Visual Studio/2022/Professional/Common7/IDE/CommonExtensions/Microsoft/TestWindow/Microsoft.VisualStudio.Extensibility.EditorHostService.EXE.
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft Visual Studio/2022/Professional/Common7/IDE/CommonExtensions/Microsoft/TestWindow/Microsoft.VisualStudio.Extensibility.EditorHostService/Microsoft.VisualStudio.Extensibility.EditorHostService.EXE.
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft Visual Studio/2022/Professional/Common7/IDE/CommonExtensions/Platform/Debugger/Microsoft.VisualStudio.Extensibility.EditorHostService.EXE.
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft Visual Studio/2022/Professional/Common7/IDE/CommonExtensions/Platform/Debugger/Microsoft.VisualStudio.Extensibility.EditorHostService/Microsoft.VisualStudio.Extensibility.EditorHostService.EXE.
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft Visual Studio/2022/Professional/Common7/IDE/PrivateAssemblies/DataCollectors/Microsoft.VisualStudio.Extensibility.EditorHostService.EXE.
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft Visual Studio/2022/Professional/Common7/IDE/PrivateAssemblies/DataCollectors/Microsoft.VisualStudio.Extensibility.EditorHostService/Microsoft.VisualStudio.Extensibility.EditorHostService.EXE.
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft Visual Studio/2022/Professional/Common7/IDE/PrivateAssemblies/DataCollectors/x64/Microsoft.VisualStudio.Extensibility.EditorHostService.EXE.
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft Visual Studio/2022/Professional/Common7/IDE/PrivateAssemblies/DataCollectors/x64/Microsoft.VisualStudio.Extensibility.EditorHostService/Microsoft.VisualStudio.Extensibility.EditorHostService.EXE.
LOG: Attempting download of new URL file:///c:/program files/microsoft visual studio/2022/professional/common7/ide/commonextensions/microsoft/extensibility/Microsoft.VisualStudio.Extensibility.EditorHostService.DLL.
LOG: Attempting download of new URL file:///c:/program files/microsoft visual studio/2022/professional/common7/ide/commonextensions/microsoft/extensibility/Microsoft.VisualStudio.Extensibility.EditorHostService/Microsoft.VisualStudio.Extensibility.EditorHostService.DLL.
LOG: Attempting download of new URL file:///c:/program files/microsoft visual studio/2022/professional/common7/ide/commonextensions/microsoft/extensibility/Microsoft.VisualStudio.Extensibility.EditorHostService.EXE.
LOG: Attempting download of new URL file:///c:/program files/microsoft visual studio/2022/professional/common7/ide/commonextensions/microsoft/extensibility/Microsoft.VisualStudio.Extensibility.EditorHostService/Microsoft.VisualStudio.Extensibility.EditorHostService.EXE.

Just as an FYI, using VisualStudioExtensibility in that way will provide very limited API support since it wouldn't be running in the context of an extension.

Makes sense -- For additional context, I was exploring the use of the VisualStudioExtensibility from code based in VS SDK as a way to start porting portions of an existing extension codebase without performing larger refactors towards using the newer extensibility contribution points just yet.

That exception helps, thanks. Unfortunately, this is an issue we noticed recently as well and should be fixed in 17.11 Preview 1 when released.

Until then a possible workaround would be to deploy assembly in question with your extension.

You can get a copy of the assembly from, it is netstandard 2.0 so should be fine to load in devenv:

"\Common7\ServiceHub\Hosts\ServiceHub.Host.Extensibility.amd64\Microsoft.VisualStudio.Extensibility.EditorHostService.dll"