【问题标题】:Custom SSIS component - method not found自定义 SSIS 组件 - 未找到方法
【发布时间】:2017-08-22 09:35:49
【问题描述】:

我在内部开发了 SSIS 组件并尝试将其移植到 SSIS 2016。我遇到的问题是该组件显示在 SSIS 工具箱中,但是一旦我尝试通过双击打开组件 UI,我得到异常“找不到方法”带有方法签名(我的程序集中的方法)。组件 UI 类中引发异常。

环境:

  • VS 2015
  • SSDT 17.2
  • 为 SQL 2016 配置的 SSIS 项目
  • 为 32 位和 64 位框架定制的 machine.config 从版本 10 到 13 的程序集绑定 SQL Server 程序集(请参阅 下面是这背后的原因)

VS 解决方案概述(旧版):

  • 为组件、UI 类、表单(组件 UI)和 表单背后的逻辑
  • .NET 版本的组件和 UI 项目是 4.0 和窗体和 逻辑项目 3.5
  • 组件和 UI 类在 C# 项目中的引用使用 SQL Server dll 版本 13,其他使用版本 10 (SQL Server 2008) - 从 2008 年移植到 2012 年时,此方法已成功使用

已检查:

  • UITypeName 不错
  • 调试组件时,显示“缺少”的程序集 方法已经加载,它是一个很好的方法(VS - 调试 - 窗口 - 模块)
  • 使用中间窗口确认存在“缺失”方法(目视检查 方法签名,声明类型和相应的模块类型是 加载自)
  • csproj 文件中的 EmbedInteropTypes 为引用设置为 true(与 false 相同)
  • 从控制台应用程序成功打开包,找到自定义组件 实例并打开其 UI。

由于调用位于我的程序集中的“缺失”方法时引发异常,我唯一能想象的是它找不到我的 dll 或无法识别类型(在 SSIS 程序集中定义)。然而,反射和 VS 模块窗口显示一切都存在。

有人知道如何克服这种情况吗?

提前致谢。

【问题讨论】:

    标签: c# .net visual-studio ssis sql-server-data-tools


    【解决方案1】:

    我正在发布我的答案,也许有人会觉得它有用。

    VS 2015 和/或 SSDT 17.2 似乎存在问题。尝试对软件和 id 进行修复、卸载和安装都没有帮助。卸载 SSSDT 17.2 并为 VS 2015 安装 SSDT 16.5 有所帮助。在此之后,我的 SSIS 组件的完全相同的部署过程和完全相同的程序集版本工作得很好。因此,我唯一能识别为更改的是 SSDT 的版本。

    很遗憾,我不知道这种行为的具体原因,也没有更多的时间来寻找答案。希望这也能对某人有所帮助。

    【讨论】:

      【解决方案2】:

      【讨论】:

      • SSIS 组件相关程序集位于 GAC 和适当的文件夹中,因为组件在 SSIS 工具箱中可见。我的其他程序集在​​ GAC 中,如问题所述,VS、Debug、Windows、Modules 表明程序集是从适当的位置加载的..
      • 考虑从链接中总结答案以备将来验证
      • 对不起,如果我的回答不清楚,我的主要工作是开发 SSIS 自定义组件。对于这个特殊问题,有两件事,要么程序集不在 GAC 中,要么您部署了一个旧程序集,其中不包含您在 GAC 中的方法,因此您需要重新编译您的 dll 并在 GAC 中更新它。
      • @dijikstra,好像我们不久前有过类似的工作:) 我同意你的回答是最合乎逻辑的。不幸的是,它对我没有帮助,因为我在以前的不眠日夜中已经检查了很多次:) 无论如何,看看我的答案,只是为了将来发布给其他人。顺便说一句,我不是对您的答案投反对票的人,因为它完全合乎逻辑,并且在这种情况下应该检查的第一件事。非常感谢您的努力!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-29
      • 1970-01-01
      • 1970-01-01
      • 2013-12-23
      • 2013-01-10
      相关资源
      最近更新 更多