【问题标题】:Visual Studio 2019 - Cannot add Custom Pipeline Object to Toolbox SSISVisual Studio 2019 - 无法将自定义管道对象添加到工具箱 SSIS
【发布时间】:2022-01-07 20:15:22
【问题描述】:

我现在想要完成的只是让我的自定义组件显示在 SSIS 工具箱中。我一直在寻找有关在 Visual Studio 2019 中创建自定义数据流组件的任何信息。我​​发现了很多过时的示例和已解决的问题,但没有一个可以帮助我解决我的问题。

根据 Microsoft 对如何执行此操作的描述,您会认为您所要做的就是按照他们的说明进行操作,它就会起作用。不是这样,至少对我来说还不是。

这是我迄今为止所做的,旨在简化并让任何事情发挥作用:

  1. 我创建了一个类库并引用了以下程序集:
  • Microsoft.SqlServer.DTSPipelineWrap
  • Microsoft.SQLServer.DTSRuntimeWrap
  • Microsoft.SQLServer.ManagedDTS
  • Microsoft.SqlServer.PiplineHost
  1. 继承自 PipelineComponent 并添加了 DtsPipelineComponent 属性。

  2. 重写的方法(下面的代码)

  3. 签署大会

  4. 创建了要安装到 GAC 中的构建后事件并将程序集复制到 C:\Program Files\Microsoft SQL Server\130\DTS\PipelineComponents 文件夹。

  5. 在一个 SSIS 项目中,我在 SSIS Toolbox 上进行了刷新,但我的组件没有显示出来。我已经尝试通过转到工具>>选择工具箱项并选择程序集来浏览程序集。

我收到这条消息:

这是我的简化代码,什么都不做:很抱歉使用图像发布它,但使用推荐的代码荧光笔也不适用于我。

这是 GAC 列表的屏幕截图:

我一定是错过了什么。

任何帮助或想法将不胜感激。如果我不能让它工作,我将不得不放弃并求助于脚本组件转换。真的很讨厌这样做,因为这意味着每个开发人员都必须维护大量额外的代码。

提前谢谢你。

【问题讨论】:

    标签: c# sql-server visual-studio ssis etl


    【解决方案1】:

    模糊的回忆,但我会试一试。

    安装到 GAC 意味着当包运行时,执行引擎将能够找到所需的程序集并执行代码指令。

    设计时需要其他地方的程序集,因为...原因。对于 2005/2008,您必须手动将项目添加到“SSIS 工具箱”。您正在尝试将项目添加到“工具箱”,这是一个令人困惑的相似名称,但它不是 SSIS。仅当打开包且项目类型为 SSIS 时才会填充 SSIS 工具箱。

    Visual Studio 现在自动拾取组件,但无论哪种方式,程序集都需要位于目标版本 Microsoft SQL Server XXX DTS 程序集域文件夹中。

    假设我为 SQL Server 2017 构建了一个带有绑定的数据流组件。因此我将安装到

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

    如果你构建了一个自定义任务,它会去

    ....\DTS\Tasks
    

    在 64 位机器上,将组件 dll 复制到 C:\Program Files (x86)\Sql Server\Dts\PipelineComponent\ 文件夹

    这将需要管理员权限,但您已经需要它们来 GAC 处理程序集。

    这篇红门文章似乎也证实了我所说的。 Developing a Custom SSIS Source Component

    如果你有聪明的开发人员,你也可以看看使用Biml 来创建你的 SSIS 包。有了它,您可以为公共项目定义一个脚本任务/组件,并且每当您将 Bi​​ml 发送到 SSIS 包中时,它们都使用相同的公共核心逻辑位。如果您不使用自定义组件路由,则不会遇到像您那样微妙的复制/粘贴继承。或者您使用声明性框架来描述您的包,也就是 Biml。

    【讨论】:

    • 感谢@Billinkc 的帮助。然而,Redgate 的文章很棒,除非我误读了某些内容,否则我已经在做你和 Saurabh Dhoble 建议的事情了。我需要补充一点,我正在使用 Visual Studio 2019 并以 Sql Server 2016 为目标。我还尝试以 Sql Server 2019 为目标。我将检查是否使用 Biml,这听起来很可能。太糟糕了,我无法让自定义组件工作。
    • 成功!我从头开始重新创建了所有内容,以 Sql Server 2016 为目标,创建了一个全新的 SSIS 项目,我的测试组件出现在工具箱中。非常感谢@Billinkc。我会将此标记为答案,希望此线程对其他人有所帮助。
    • 还有一点需要注意:在 64 位机器上,将组件 dll 复制到 C:\Program Files (x86)\Sql Server\Dts\\PipelineComponent\文件夹
    猜你喜欢
    • 2013-04-07
    • 2011-03-27
    • 1970-01-01
    • 2011-04-28
    • 1970-01-01
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多