65.9K
CodeProject 正在变化。 阅读更多。
Home

通过 SSIS (脚本组件) 访问 .NET 程序集

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.50/5 (8投票s)

2006 年 10 月 8 日

1分钟阅读

viewsIcon

59053

这里有一些很酷的东西可以从 SSIS 调用 .NET 程序集

引言

大家好,

 

这里有一些很酷的东西可以从 SSIS 的脚本组件调用 .NET 程序集。

请记住,每当我们使用“脚本组件”开发 SSIS 应用程序时,默认情况下,我们在单击“添加引用”时会从默认路径...Microsoft.NET\Framework\v2.0.50727 中获取程序集列表,如下所示,

Sample screenshot

现在的问题是如何从脚本组件调用任何业务逻辑(包含在 .NET 程序集中)……?

我会说将该程序集(需要引用)物理地放在...Microsoft.NET\Framework\v2.0.50727 处。 但我认为这只是一个解决方法,而不是一个合适的解决方案。

接下来是另一种适应所述功能的方法,

1.      在脚本组件中导入“System.Reflection”程序集

2.      将程序集(需要引用)添加到 GAC

3.      编写以下代码以从您自己的 SSIS 脚本组件调用外部程序集。

           

//定义类型为 [Assembly] 的变量 

Dim targetAssembly As [Assembly] = Nothing

//将名为“CallBySSIS”的程序集从 GAC 加载到定义的变量中 

targetAssembly = [Assembly].LoadWithPartialName("CallBySSIS")

//定义用于保存“Type”对象的变量

Dim targetType As Type

//从程序集这里“clsTest”获取特定类

targetType = targetAssembly.GetType("CallBySSIS.clsTest")

//定义类型为 Object 的变量

Dim objClsTest As Object

//将“clsTest”的实例获取到定义的变量中

objClsTest = targetType.InvokeMember("clsTest", BindingFlags.CreateInstance,   Nothing, Nothing, Nothing)

//现在您可以自由地调用名为//“writeToFile(String strMessage)”的类“clsTest”的函数

objClsTest.writeToFile("Colour Dataflow : " + ex.Message)

4.      在脚本组件的顶部添加“option Strict Off”;否则将发生编译时转换错误。

我希望这篇文章能拯救 SSIS 开发人员的生命,因为它展示了如何使用先前编写的复杂逻辑。      

 

© . All rights reserved.