SSIS自定义组件未显示在工具箱中

Posted

技术标签:

【中文标题】SSIS自定义组件未显示在工具箱中【英文标题】:SSIS Custom component not showing up in toolbox 【发布时间】:2021-01-29 06:37:09 【问题描述】:

我正在使用 Visual Studio 2019 创建“hello world”自定义数据流转换。

我的设置是: 视觉工作室 2019 16.4.2 SQL Server 数据工具 16.0.61912.09160 我的本地计算机正在运行 Microsoft SQL Server 2017 (RTM) - 14.0.1000.169 (X64)

在尝试了几个小时让我的 dll 注册为自定义数据流组件后,我创建了一个空的准系统自定义组件,它不做任何事情以确保:

引用了来自 v.40_*** 文件夹示例的 DTS 程序集:C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.SqlServer.DTSPipelineWrap\v4.0_14.0.0。 0__89845dcd8080cc91\Microsoft.SQLServer.DTSPipelineWrap.dll 引用的 DTS 程序集都将“特定版本”设置为 false 为程序集使用了强名称

有了这个我:

在 GAC 中注册 将 dll 复制到 C:\Program Files\Microsoft SQL Server\140\DTS\PipelineComponents 重新启动 Visual Studio

但工具箱中仍然没有自定义组件。

有人有什么想法吗?

【问题讨论】:

Custom Data Flow Component 上的参考资料自从我构建上一个组件以来已经快十年了,但看起来你的步骤正确 【参考方案1】:

从 SSIS 2014 开始,为了支持 SSDT 的多目标功能,自定义组件开发人员需要为每个扩展设置一个“别名”。别名与扩展名之间的映射称为“扩展名映射”。在 %programfiles(x86)%\Microsoft SQL Server\version\DTS\UpgradeMappings 文件夹中,您可以找到一个“extension extension.xml”文件,其中包含产品中所有扩展的所有扩展映射。您还需要为您的扩展添加一个新的扩展映射文件。以下是扩展映射的示例:

<?xml version="1.0" encoding="utf-8"?>
<Extensions xmlns="http://www.microsoft.com/SqlServer/Dts/Extensions.xsd">
<PipelineComponents>
<PipelineComponent Identifier="<your component name from DisplayName property>" Model=".NET">
<CreationName>'your component namespace and class name', 'component assembly name', Version=1.0.0.0, Culture=neutral, PublicKeyToken=...</CreationName>
</PipelineComponent>
</PipelineComponents>
</Extensions> 

来自真实项目的示例

<?xml version="1.0" encoding="utf-8" ?>
<Extensions xmlns="http://www.microsoft.com/SqlServer/Dts/Extensions.xsd">
  <PipelineComponents>
    <PipelineComponent Identifier="SrcSys Data" Model=".NET">
      <CreationName>MyCompany.SrcSys.SrcSysRead, MyCompany.SrcSys.Src.2016, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d934c2f83a6e8e9a</CreationName>
      <TypeConverter name="Request Type">MyCompany.SrcSys.Adapt_Const+RequestType, MyCompany.SrcSys.Src.2016, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d934c2f83a6e8e9a</TypeConverter>
    </PipelineComponent>
  </PipelineComponents>
</Extensions>

【讨论】:

感谢您的回答。我真的很感动,你设法挖掘了这个。似乎 MS 正在积极尝试阻止自定义组件的开发,而您必须跳过所有障碍才能使其正常工作。我像你概述的那样将我的组件添加到 extensions.xml 文件中。它仍然不起作用。如果我只针对一个 sql server 版本(2019),是否需要升级映射文件? @PeterK 如果您将项目定位到 SSIS 2019,则必须将您的 extensions.xml 文件放入 %programfiles(x86)%\Microsoft SQL Server\150\DTS\UpgradeMappings。添加文件作为项目的示例。仅当您将自定义类型的属性添加到自定义组件中时才需要 Typeconverner 节点。

以上是关于SSIS自定义组件未显示在工具箱中的主要内容,如果未能解决你的问题,请参考以下文章

SSIS:如何调试在脚本组件内部引用的自定义程序集

vue中自定义组件(插件)

小程序中自定义组件

在 Apollo React Mutation 组件中自定义变量

记一次vue中自定义组件native的坑

小程序中自定义组件