Visual Studio 2019 - 无法将自定义管道对象添加到 SSIS 工具箱

3
我现在所尝试的就是让我的自定义组件显示在SSIS工具箱中。我已经在能想到的所有地方寻找有关在Visual Studio 2019中创建自定义数据流组件的信息。我找到了很多过时的示例和已解决的问题,但都没有帮助我解决我的问题。
根据微软的描述,你会认为只需按照他们的说明操作即可实现。但至少对我来说并非如此。
以下是我迄今为止为简化和获得任何可行结果而做的事情:
1. 我创建了一个类库并引用了以下程序集:
  • Microsoft.SqlServer.DTSPipelineWrap
  • Microsoft.SQLServer.DTSRuntimeWrap
  • Microsoft.SQLServer.ManagedDTS
  • Microsoft.SqlServer.PiplineHost
  1. 继承PipelineComponent并添加了DtsPipelineComponent属性。

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

  3. 对程序集进行签名

  4. 创建Post-build事件以安装到GAC,并将程序集复制到C:\Program Files\Microsoft SQL Server\130\DTS\PipelineComponents文件夹中。

  5. 在SSIS项目中,我刷新了SSIS工具箱,但我的组件没有显示出来。我尝试通过Tools >> Choose Toolbox Items并选择程序集来浏览程序集。

我收到了以下消息:

enter image description here

这是我的简化代码,什么也不做:很抱歉我用图片发布了它,但使用推荐的代码高亮工具对我来说也不起作用。

enter image description here

这是GAC清单的屏幕截图:

enter image description here

我一定是漏了什么。

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

提前致谢。

1个回答

4

我有些模糊的记忆,但我会尽力而为。

将安装程序安装到全局程序集缓存(GAC)意味着当软件运行时,执行引擎可以找到需要的程序集并执行代码指令。

设计时需要将程序集放在其他地方,因为...原因。在2005/2008中,你必须手动向“SSIS工具箱”中添加项目。你试图向“工具箱”中添加项目,这是一个非常相似的名字,但它不是SSIS。只有在打开包并且项目类型为SSIS时,才会填充SSIS工具箱。

enter image description here

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 \文件夹中。
这需要管理员权限,但安装程序集时已经需要了。
这篇Red-Gate文章似乎也证实了我的说法。开发自定义SSIS源组件 如果你有聪明的开发人员,你也可以考虑使用Biml来创建你的SSIS包。借助它,你可以为通用项目定义一个单独的脚本任务/组件,每当你将Biml导出到SSIS包时,它们都使用相同的通用核心逻辑。如果不走自定义组件路线,就不会遇到任何微妙的复制/粘贴继承问题。或者,你可以使用一种描述你的包的申明式框架,即Biml。

感谢@Billinkc的帮助。Redgate的文章很棒,但是除非我读错了什么,我已经在做你和Saurabh Dhoble建议的事情了。需要补充一下,我正在使用Visual Studio 2019并针对Sql Server 2016进行开发。我也尝试过针对Sql Server 2019进行开发。我会研究一下使用Biml,这听起来是一个真正的可能性。太遗憾我无法让自定义组件工作。 - Rbailey56
成功了!我从头开始重新创建了一切,针对Sql Server 2016进行了定位,创建了一个全新的SSIS项目,我的测试组件出现在工具箱中。非常感谢@Billinkc。我会将此标记为答案,希望这个线程能帮助其他人。 - Rbailey56
还有一件需要注意的事情:在64位机器上,将组件dll复制到C:\Program Files (x86)\Sql Server\Dts<适当版本>\PipelineComponent\文件夹中。 - Rbailey56

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接