Как программно добавить пользовательский компонент в набор инструментов Visual Studio? - PullRequest
2 голосов
/ 20 декабря 2010

Я создаю установщик для пользовательского компонента SSIS, который мы написали.Я хотел бы добавить пользовательский компонент автоматически, а не просить пользователя добавить его вручную.

Я пытаюсь сделать это с помощью этого кода:

public void AddToolboxItem(string toolboxTabName, string toolBoxItemName, string toolBoxItemPath) {
  Type dteReference;
  EnvDTE.ToolBox toolBox;
  EnvDTE80.ToolBoxItem2 addedToolBoxItem;

  // Get a reference to the visual studio development environment.
  dteReference = Type.GetTypeFromProgID("VisualStudio.DTE.9.0");

  if(dteReference != null) {
    // Get a reference to the toolbox of the development environment.
    EnvDTE80.DTE2 dte = (EnvDTE80.DTE2)Activator.CreateInstance(dteReference);
    toolBox = (EnvDTE.ToolBox)dte.Windows.Item("{B1E99781-AB81-11D0-B683-00AA00A3EE26}").Object;

    // Loop through all tab pages to find the toolbox tab page that was specified
    // in the toolboxTabName parameter.
    foreach (EnvDTE80.ToolBoxTab2 toolBoxTab in toolBox.ToolBoxTabs) {

      // Is this the right toolbox?
      if(string.Compare(toolBoxTab.Name, toolboxTabName, true) == 0) {

        // First check if the component is not already in the toolbox:
        bool found = false;
        foreach(EnvDTE80.ToolBoxItem2 toolBoxItem in toolBoxTab.ToolBoxItems) {
          if (string.Compare(toolBoxItem.Name, toolBoxItemName, true) == 0) {
            found = true;
            break;
          }
        }

        // The toolbox item is not in the toolbox tab, add it:
        if (!found) {
          addedToolBoxItem = (EnvDTE80.ToolBoxItem2)toolBoxTab.ToolBoxItems.Add(
            toolBoxItemName,
            toolBoxItemPath,
            EnvDTE.vsToolBoxItemFormat.vsToolBoxItemFormatDotNETComponent);
        }
        break;
      }
    }
  }
}

Я могу получитьссылка на вкладку «Преобразование потока данных», но при добавлении элемента произойдет сбой без исключения или ошибки.

Я вызываю эту функцию с параметрами:

  • toolboxTabName = "Поток данныхПреобразования "
  • toolBoxItemName =" Специальный тестовый компонент "
  • toolBoxItemPath =" c: \ Program Files \ Microsoft SQL Server \ 100 \ DTS \ PipelineComponents \ mdTest.dll "

В качестве проверки работоспособности я попытался использовать перечисление vsToolBoxItemFormatDotNETComponent в качестве третьего параметра Add ().Это заставляет Add возвращать действительный объект (т. Е. Успех), но новый элемент не появляется в наборе инструментов.Я подозреваю, что может потребоваться какая-то операция «сохранения» (даже если я заставлю Add () работать должным образом).

Есть ли какой-нибудь способ программно добавить компонент SSIS в панель инструментов?

1 Ответ

3 голосов
/ 11 июня 2011

Этот же вопрос можно найти на форумах MSDN, на который ему ответил MVP, модератор. Я вставляю ссылку на ответ, предоставленный на MSDN форумах, чтобы другие, спотыкающиеся в этом вопросе, могли знать, что это за ответ.

Программно добавить компонент служб SSIS на панель инструментов (social.msdn.microsoft.com)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...