Как убедиться, что моя служба зарегистрирована в AsyncPackage
моего расширения Visual Studio? Я следил за образцом из VSSDK-Extensibility-Samples а>. Я также посмотрел, как это делают другие расширения. Я пытался сделать то же самое, но не могу получить услугу от глобального поставщика услуг.
Шаги, которые я сделал:
[Shell.ProvideService(typeof(SMyService), IsAsyncQueryable = true)]
для моего класса асинхронного пакета[Guid(...)] interface SMyService { }
определенный интерфейс в новом файлеpublic class MyService { }
как сервисная реализация. Он создан методомCreateServiceAsync
var container = (Shell.IAsyncServiceContainer)this; container.AddService(typeof(SMyService), CreateServiceAsync);
внутри методаAsyncPackage.InitializeAsync
перед вызовомbase.InitializeAsync
Есть ли что-то, чего мне не хватает, чтобы сделать мою службу доступной из других служб расширения VS? Когда я делаю AsyncServiceProvider.GlobalProvider.GetServiceAsync(typeof(SMyService))
внутри, скажем, метода компонента MEF, я получаю ноль. Нужно ли регистрировать сервис где-то еще?
serviceProvider.GetService(Type.GetTypeFromCLSID(...))
для получения зависимости, которую я пытаюсь предоставить. Поэтому мне нужно передать руководство родительской службе и предоставить мою службу, указанную в руководстве. - person Mylan719   schedule 21.10.2019My problem is I absolutely have to register the service the old way.
Поскольку вы используете VS2019, зачем вам регистрировать службу по-старому? - person LoLance   schedule 25.10.2019