SSIS字符串类型变量在C#脚本任务中未被识别为类型字符串

本文关键字:字符串 识别 类型 任务 类型变量 脚本 SSIS | 更新日期: 2023-09-27 18:26:24

在编写SSIS包(BIDS版本2012)时,我声明了一个包级变量strFileLocation,并将其设置为String类型,并给它一个值"C:''Temp''file.txt"。

然后,我在SSIS包中创建了一个C#脚本任务。打开脚本任务编辑器,我将strFileLocation变量声明为ReadOnlyVariable。

然后我打开脚本编辑器并声明这个C#变量

string strFilePath = ""

然后我写了这行代码:

strFilePath = Dts.Variables["strFileLocation"].Value; 

但这段代码不起作用,产生了以下编译错误:

无法将类型"object"隐式转换为"string"。存在显式转换(是否缺少强制转换?)

我能够通过使用以下代码来解决问题:

strFilePath = Dts.Variables["strFileLocation"].Value.ToString();

SSIS类型字符串似乎与C#类型字符串不同。这与Unicode有关吗?我是否总是要显式地将SSIS变量转换为适当的C#数据类型?

SSIS字符串类型变量在C#脚本任务中未被识别为类型字符串

再做一点研究,我相信我能回答我自己的问题。SSIS包和脚本任务代码似乎看变量的方式不同。变量将在SSIS包中显示为类型字符串,但同一变量在C#(或VB)脚本中显示为对象。

来自微软网站:http://msdn.microsoft.com/en-us/library/ms135941(d=打印机).aspx

Script任务使用Dts对象的Variables属性来读取和写入包中的Variable对象。

备注Variable类的Value属性的类型为Object。由于Script任务已启用Option Strict,因此必须先将Value属性强制转换为适当的类型,然后才能使用它。