简体   繁体   中英

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:

在此处输入图像描述

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.

在此处输入图像描述

Here is a screenshot of the GAC listing:

在此处输入图像描述

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.

在此处输入图像描述

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

....\DTS\Tasks

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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM