Obter informações de serviço do repositório de configurações
Você pode usar o repositório de configurações para localizar todos os serviços disponíveis ou para determinar se um determinado serviço está instalado. Você deve saber o tipo da classe de serviço.
Para listar os serviços disponíveis
Crie um projeto VSIX chamado e, em seguida, adicione um comando personalizado chamado
FindServicesExtension
FindServicesCommand
. Para obter mais informações sobre como criar um comando personalizado, consulte Criar uma extensão com um comando de menuEm FindServicesCommand.cs, adicione o seguinte usando diretivas:
using System.Collections.Generic; using Microsoft.VisualStudio.Settings; using Microsoft.VisualStudio.Shell.Settings; using System.Windows.Forms;
Obtenha o repositório de definições de configuração e localize a subcoleção chamada Serviços. Esta coleção inclui todos os serviços disponíveis. No método, remova o
MenuItemCommand
código existente e substitua-o pelo seguinte:private void MenuItemCallback(object sender, EventArgs e) { SettingsManager settingsManager = new ShellSettingsManager(ServiceProvider); SettingsStore configurationSettingsStore = settingsManager.GetReadOnlySettingsStore(SettingsScope.Configuration); string message = "Available services:\n"; IEnumerable<string> collection = configurationSettingsStore.GetSubCollectionNames("Services"); int n = 0; foreach (string service in collection) { message += configurationSettingsStore.GetString("Services\\" + service, "Name", "Unknown") + "\n"; } MessageBox.Show(message); }
Compile o projeto e comece a depuração. A instância experimental é exibida.
Na instância experimental, no menu Ferramentas , clique em Invoke FindServicesCommand.
Você verá uma caixa de mensagem listando todos os serviços.
Para verificar essas configurações, você pode usar o editor do Registro.
Encontre um serviço específico
Você também pode usar o CollectionExists método para determinar se um determinado serviço está instalado. Você deve saber o tipo da classe de serviço.
No MenuItemCallback do projeto criado no procedimento anterior, pesquise o repositório de definições de configuração para a coleção que tem a
Services
subcoleção nomeada pelo GUID do serviço. Neste caso, procuraremos o serviço de Ajuda.private void MenuItemCallback(object sender, EventArgs e) { SettingsManager settingsManager = new ShellSettingsManager(ServiceProvider); SettingsStore configurationSettingsStore = settingsManager.GetReadOnlySettingsStore(SettingsScope.Configuration); string helpServiceGUID = typeof(SVsHelpService).GUID.ToString("B").ToUpper(); bool hasHelpService = configurationSettingsStore.CollectionExists("Services\\" + helpServiceGUID); string message = "Help Service Available: " + hasHelpService; MessageBox.Show(message); }
Compile o projeto e comece a depuração.
Na instância experimental, no menu Ferramentas , clique em Invoke FindServicesCommand.
Você verá uma mensagem com o texto Serviço de Ajuda Disponível: seguido de Verdadeiro ou Falso. Para verificar essa configuração, você pode usar um editor do Registro, conforme mostrado nas etapas anteriores.