Como: usar GetGlobalService
Às vezes, você talvez precise obter um serviço de uma janela de ferramenta ou controle de recipiente que não tenha sido localizado, ou então tem sido localizado com um provedor de serviços que não conhece o serviço desejado. Por exemplo, você talvez queira gravar no log de atividade de dentro de um controle. Para obter mais informações sobre esses e outros cenários, consulte Como: solucionar problemas de serviços.
Você pode obter a maioria dos Visual Studio serviços chamando estática GetGlobalService método.
GetGlobalServicedepende de um provedor de serviços em cache que é inicializado na primeira vez que qualquer VSPackage é derivada de Package é localizado. Você deve garantir que essa condição for atendida, senão estar preparada para um serviço nulo.
Felizmente, GetGlobalService funciona corretamente na maioria das vezes.
Se um VSPackage fornece um serviço conhecido apenas por outro VSPackage, o VSPackage solicitando o serviço é localizado antes do VSPackage fornecendo que o serviço for carregado.
Se uma janela de ferramenta é criada por um VSPackage, o VSPackage é localizado antes que a janela da ferramenta é criada.
Se um controle contêiner for hospedado por uma janela de ferramenta criada por um VSPackage, o VSPackage é localizado antes do contêiner de controle é criado.
Para obter um serviço a partir de um contêiner de controle ou janela de ferramenta
Inserir este código na janela da ferramenta, construtor ou contêiner de controle:
Dim log As IVsActivityLog = TryCast(Package.GetGlobalService(GetType(SVsActivityLog)), IVsActivityLog) If log Is Nothing Then Return End If
IVsActivityLog log = Package.GetGlobalService(typeof(SVsActivityLog)) as IVsActivityLog; if (log == null) return;
Esse código obtém um serviço de SVsActivityLog e projeta-o para um IVsActivityLog interface, que pode ser usado para gravar no log de atividade. Para um exemplo, consulte Como: usar o Log de atividade.
Consulte também
Tarefas
Como: solucionar problemas de serviços