Visual Studio 2019 - Cannot add Custom Pipeline Object to Toolbox SSIS


All I'm trying to accomplish right now is get my custom component to show up in the SSIS Toolbox. I've been looking everywhere I can think of for any information about creating a custom Data Flow Component in Visual Studio 2019. I have found plenty of out-dated examples and solved problems, none of which help me solve my problem.

Based on Microsoft's description of how to do this, you would think all you have to do is follow their instructions and it'll work. Not so, at least not for me yet.

Here's what I've done so far in an attempt to simplify and get anything to work:

  1. I Created a class library and referenced the following assemblies:
  • Microsoft.SqlServer.DTSPipelineWrap
  • Microsoft.SQLServer.DTSRuntimeWrap
  • Microsoft.SQLServer.ManagedDTS
  • Microsoft.SqlServer.PiplineHost
  1. Inherited from PipelineComponent and added the DtsPipelineComponent attribute.

  2. Overridden methods (code below)

  3. Signed the assembly

  4. Created Post-build events to install into the GAC and copied the assembly to the C:\Program Files\Microsoft SQL Server\130\DTS\PipelineComponents folder.

  5. In an SSIS project, I do a refresh on SSIS Toolbox and my component does not show up. I've tried Browsing to the assembly by going to Tools >> Choose Toolbox Items and selecting the assembly.

I get this message:

enter image description here

Here is my simplified code that does nothing: Sorry about having posted it using an image, but using the recommended code highlighters don't work for me either.

enter image description here

Here is a screenshot of the GAC listing:

enter image description here

I must be missing something.

Any help or ideas would be greatly appreciated. If I can't get this to work, I'll have to punt and resort to a Script Component transformation. Really hate to do that as that means each developer will have to maintain a lot of extra code.

Thank you in advance.


Hazy recollection but I'll give it a go.

The installation to the GAC means that when the package runs, the execution engine will be able to find the required assemblies and do the code instructions.

Design-time needs the assemblies elsewhere because...reasons. With 2005/2008, you had to manually add items to the "SSIS Toolbox." You are attempting to add items to the "Toolbox" which is a confusingly similar name but it's not SSIS. SSIS Toolbox is populated only when a package is opened and the project type is SSIS.

enter image description here

Visual Studio now automagically picks up components but either way, the assemblies need to be sitting in the targeted version Microsoft SQL Server XXX DTS assembly-domain folder.

Assume I build a dataflow component with bindings for SQL Server 2017. I would therefore install to

C:\Program Files\Microsoft SQL Server\140\DTS\PipelineComponents

If you built a custom task, it'd go to


That's going to require admin rights but you already needed them for GAC'ing the assembly as well.

This Red-Gate article seems to confirm what I'm saying as well. Developing a Custom SSIS Source Component

If you've got smart developers, you might also take a look at using Biml to create your SSIS packages. With it, you can have a single Script Task/Component defined for the common project and whenever you emit the Biml into SSIS packages, they all use the same common core bit of logic. No subtle copy/paste inheritance like you can run into if you don't go custom component route. Or you use a declarative framework for describing your packages, aka Biml.

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at


Login to comment


TOP Ranking