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






2.50/5 (8投票s)
2006 年 10 月 8 日
1分钟阅读

59053
这里有一些很酷的东西可以从 SSIS 调用 .NET 程序集
引言
大家好,
这里有一些很酷的东西可以从 SSIS 的脚本组件调用 .NET 程序集。
请记住,每当我们使用“脚本组件”开发 SSIS 应用程序时,默认情况下,我们在单击“添加引用”时会从默认路径...Microsoft.NET\Framework\v2.0.50727 中获取程序集列表,如下所示,
现在的问题是如何从脚本组件调用任何业务逻辑(包含在 .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 开发人员的生命,因为它展示了如何使用先前编写的复杂逻辑。