Visual Studio 2019 - 无法将自定义管道对象添加到工具箱 SSIS
Visual Studio 2019 - Cannot add Custom Pipeline Object to Toolbox SSIS
我现在要做的就是让我的自定义组件显示在 SSIS 工具箱中。我一直在寻找我能想到的有关在 Visual Studio 2019 年创建自定义数据流组件的任何信息。我发现了很多过时的示例并解决了问题,none 其中对我有帮助解决我的问题。
根据 Microsoft 对如何执行此操作的描述,您会认为您所要做的就是按照他们的说明进行操作,它就会起作用。不是这样,至少对我来说还不是。
以下是我到目前为止所做的尝试以简化并使任何事情正常工作:
- 我创建了一个 class 库并引用了以下程序集:
- Microsoft.SqlServer.DTSPipelineWrap
- Microsoft.SQLServer.DTSRuntimeWrap
- Microsoft.SQLServer.ManagedDTS
- Microsoft.SqlServer.PiplineHost
继承自 PipelineComponent 并添加了 DtsPipelineComponent 属性。
覆盖的方法(下面的代码)
签署大会
创建了 Post-build 事件以安装到 GAC 并将程序集复制到 C:\Program Files\Microsoft SQL Server0\DTS\PipelineComponents
文件夹。
在 SSIS 项目中,我刷新了 SSIS 工具箱,但我的组件没有显示。我已尝试通过转到 工具 >> 选择工具箱项 并选择程序集来浏览到程序集。
我收到这条消息:
这是我的简化代码,什么都不做:很抱歉使用图片发布它,但使用推荐的代码荧光笔对我也不起作用。
这是 GAC 列表的屏幕截图:
我一定是漏了什么。
任何帮助或想法将不胜感激。如果我不能让它工作,我将不得不放弃并求助于脚本组件转换。真的很讨厌这样做,因为这意味着每个开发人员都必须维护大量额外的代码。
提前谢谢你。
朦胧的回忆,但我会试一试。
安装到GAC意味着当包运行s时,执行引擎就能找到需要的程序集并执行代码指令。
设计时需要其他地方的程序集,因为...原因。在 2005/2008 中,您必须手动将项目添加到“SSIS 工具箱”。您正试图将项目添加到“工具箱”,这是一个容易混淆的相似名称,但它不是 SSIS。仅当打开包且项目类型为 SSIS 时才会填充 SSIS 工具箱。
Visual Studio 现在自动拾取组件,但无论哪种方式,程序集都需要位于目标版本 Microsoft SQL Server XXX DTS 程序集域文件夹中。
假设我构建了一个绑定了 SQL Server 2017 的数据流组件。因此我会安装到
C:\Program Files\Microsoft SQL Server0\DTS\PipelineComponents
如果您构建了自定义任务,它将转到
....\DTS\Tasks
在 64 位机器上,将组件 dll 复制到 C:\Program Files (x86)\Sql Server\Dts<适当的版本>\PipelineComponent\ 文件夹
这将需要管理员权限,但您已经需要它们来进行 GAC 程序集。
这篇 Red-Gate 文章似乎也证实了我的意思。 Developing a Custom SSIS Source Component
如果您有聪明的开发人员,您还可以看看使用 Biml 创建您的 SSIS 包。有了它,您可以为公共项目定义一个脚本 Task/Component,并且每当您将 Biml 发送到 SSIS 包中时,它们都使用相同的公共核心逻辑位。如果您不使用自定义组件路由,则没有像您可以 运行 那样微妙的 copy/paste 继承。或者您使用声明性框架来描述您的包,又名 Biml。
我现在要做的就是让我的自定义组件显示在 SSIS 工具箱中。我一直在寻找我能想到的有关在 Visual Studio 2019 年创建自定义数据流组件的任何信息。我发现了很多过时的示例并解决了问题,none 其中对我有帮助解决我的问题。
根据 Microsoft 对如何执行此操作的描述,您会认为您所要做的就是按照他们的说明进行操作,它就会起作用。不是这样,至少对我来说还不是。
以下是我到目前为止所做的尝试以简化并使任何事情正常工作:
- 我创建了一个 class 库并引用了以下程序集:
- Microsoft.SqlServer.DTSPipelineWrap
- Microsoft.SQLServer.DTSRuntimeWrap
- Microsoft.SQLServer.ManagedDTS
- Microsoft.SqlServer.PiplineHost
继承自 PipelineComponent 并添加了 DtsPipelineComponent 属性。
覆盖的方法(下面的代码)
签署大会
创建了 Post-build 事件以安装到 GAC 并将程序集复制到
C:\Program Files\Microsoft SQL Server0\DTS\PipelineComponents
文件夹。在 SSIS 项目中,我刷新了 SSIS 工具箱,但我的组件没有显示。我已尝试通过转到 工具 >> 选择工具箱项 并选择程序集来浏览到程序集。
我收到这条消息:
这是我的简化代码,什么都不做:很抱歉使用图片发布它,但使用推荐的代码荧光笔对我也不起作用。
这是 GAC 列表的屏幕截图:
我一定是漏了什么。
任何帮助或想法将不胜感激。如果我不能让它工作,我将不得不放弃并求助于脚本组件转换。真的很讨厌这样做,因为这意味着每个开发人员都必须维护大量额外的代码。
提前谢谢你。
朦胧的回忆,但我会试一试。
安装到GAC意味着当包运行s时,执行引擎就能找到需要的程序集并执行代码指令。
设计时需要其他地方的程序集,因为...原因。在 2005/2008 中,您必须手动将项目添加到“SSIS 工具箱”。您正试图将项目添加到“工具箱”,这是一个容易混淆的相似名称,但它不是 SSIS。仅当打开包且项目类型为 SSIS 时才会填充 SSIS 工具箱。
Visual Studio 现在自动拾取组件,但无论哪种方式,程序集都需要位于目标版本 Microsoft SQL Server XXX DTS 程序集域文件夹中。
假设我构建了一个绑定了 SQL Server 2017 的数据流组件。因此我会安装到
C:\Program Files\Microsoft SQL Server0\DTS\PipelineComponents
如果您构建了自定义任务,它将转到
....\DTS\Tasks
在 64 位机器上,将组件 dll 复制到 C:\Program Files (x86)\Sql Server\Dts<适当的版本>\PipelineComponent\ 文件夹
这将需要管理员权限,但您已经需要它们来进行 GAC 程序集。
这篇 Red-Gate 文章似乎也证实了我的意思。 Developing a Custom SSIS Source Component
如果您有聪明的开发人员,您还可以看看使用 Biml 创建您的 SSIS 包。有了它,您可以为公共项目定义一个脚本 Task/Component,并且每当您将 Biml 发送到 SSIS 包中时,它们都使用相同的公共核心逻辑位。如果您不使用自定义组件路由,则没有像您可以 运行 那样微妙的 copy/paste 继承。或者您使用声明性框架来描述您的包,又名 Biml。