Вопросы, предлагающие языковой сервис
Я нашел два способа предложить языковой сервис в интернете.
Первый способ включает в себя использованиеIOleComponentManager
и регистрация таймера для вызова моей службы во время простоя.
Второй способ включает в себя корпус моей службы в качествеIServiceContainer
и добавлениеServiceCreatorCallback
«предложить услугу по требованию».
Предположительно, второй способ теперь является «предпочтительным» способом ведения дел. К сожалению, когда я использую этот метод,OnSynchronizeDropdowns
никогда не вызывается на мойTypeAndMembersDropdownBars
реализация.
Кроме того, когда мойLanguageService
находит ошибки в файле, он используетParseRequest.Sink.AddError()
добавить ошибки в список ошибок. При предложении «По требованию» эти ошибки не отображаются в графическом интерфейсе, хотя я вижу, что они добавляются при отладке кода.
Я знаю, что моя языковая служба регистрируется, поскольку подсветка синтаксиса, «Перейти к определению» и «Найти все ссылки» по-прежнему работают.
Вот код, который я использую, чтобы «предложить свой сервис по требованию»:
IServiceContainer serviceContainer = this as IServiceContainer;
ServiceCreatorCallback callback = new ServiceCreatorCallback(CreateLanguageService);
serviceContainer.AddService(typeof(MyLanguageService), callback, true);
Может кто-нибудь сказать мне, почему некоторые функции моегоLanguageService
не работает, предлагая его по требованию? Я что-то упустил или просто не предназначен для полнофункциональной языковой службы?