SSIS和重用C#

SSIS和重用C#,c#,ssis,code-reuse,C#,Ssis,Code Reuse,我是SSIS/C#的新手(我通常是Java开发人员),如果这是一个非常愚蠢的问题,我深表歉意 本质上,问题在于:我有两个数据流任务,它们加载数据并将其导出为传统的平面文件格式。格式化由脚本任务(C#)完成 我想做的是在两者之间共享一些通用代码。e、 我可以创建一个公共基类,然后为我的两个不同的脚本任务扩展它 然而,SSIS似乎并没有真正为此做出准备 有人知道有没有办法完成我想做的事情吗?我很确定可以在SSIS脚本中访问.NET程序集。所以你可以这样做。请参见SQL Server Central上

我是SSIS/C#的新手(我通常是Java开发人员),如果这是一个非常愚蠢的问题,我深表歉意

本质上,问题在于:我有两个数据流任务,它们加载数据并将其导出为传统的平面文件格式。格式化由脚本任务(C#)完成

我想做的是在两者之间共享一些通用代码。e、 我可以创建一个公共基类,然后为我的两个不同的脚本任务扩展它

然而,SSIS似乎并没有真正为此做出准备


有人知道有没有办法完成我想做的事情吗?

我很确定可以在SSIS脚本中访问.NET程序集。所以你可以这样做。请参见SQL Server Central上的。

我相信您必须创建一个程序集或Web服务才能使其正常工作。

您是正确的,没有直接从SSI执行此操作的简单方法

在最近的一个项目中,我们采用了两种不同的方法,这两种方法都非常有效,具体取决于您需要做什么:

  • 创建实用程序类(作为简单类库)并从脚本任务中引用它。这与任何其他类型的引用几乎相同。如果使用.NET 3.5,请记住,由于SSIS默认为2.0,因此必须在脚本任务中手动更新版本。我们还发现,如果我们想在实用程序组件中实现某种方式的可重用性(不依赖硬编码的变量名等),那么包仍然必须有相当多的“设置”样板文件才能使用实用程序脚本

  • 创建自定义数据流组件。这是一个更复杂的过程,但最终将在避免代码重复方面做得最好。通常,对实际数据流进行编码非常简单,与脚本组件没有太大区别,但是您需要的各种设置代码可能会使事情变得复杂。SSIS中也没有太多对出现问题时的支持。在我们的项目中导致了大量的侦探工作


  • 如果您计划大量使用某个东西,并且致力于尽可能地摆脱样板代码,那么2是首选选项。如果它在一些地方被使用,考虑1的简单方法。

    < P>这并不能完全解决你的问题,但是它确实有助于不必每次需要时重新创建所有的类(我也不想为我的当前项目部署引用程序集)。首先,您需要类的主副本,您可以使用下面相同的过程从现有脚本任务中复制它们,但过程相反

  • 打开脚本任务的编辑器,在属性资源管理器上单击项目文件(st_U8;[Guid]),在属性窗口中,您将看到项目文件夹的位置。(每次编辑脚本任务时都会重新创建此位置)

  • 在资源管理器中,将类复制到此文件夹

  • 在项目资源管理器上,单击“显示所有文件”图标

  • 右键单击文件并添加到项目


  • 回答这个问题可能太晚了,但是您可以单击解决方案并在那里添加一个类。然后,当您进入脚本时,您可以说添加现有对象并搜索您先前创建的类。对我来说,它位于项目的解决方案旁。还没有完成部署或其他相关工作,但至少可以通过单个脚本访问该类

    另一个答案中的链接给出了#1的一步一步这基本上是一个很好的#1的一步一步在顶部答案中可能重复这项工作,但有明显的缺点。每个脚本都使用其自己的“共享”代码副本进行编译,除非您触摸使用引用文件的每个任务,否则对共享代码的更改将无效。也就是说,如果共享源更改,它们不会自动重新编译。