Я создаю установщик для пользовательского компонента 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 в панель инструментов?