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

时间:2014-10-14 12:45:08

标签: c# ssis

在编写SSIS包(BIDS版本2012)时,我已声明了包级别变量 strFileLocation并将其设置为String类型,并为其赋予值" C:\ Temp \ file.txt"。

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

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

string strFilePath = ""

然后我写了这行代码:

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

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

  

无法隐式转换类型'对象'到'字符串'。存在显式转换(您是否错过了演员?)

我能够通过使用此代码解决问题:

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

似乎SSIS类型字符串与C#类型字符串不同。这与Unicode有关吗?并且我是否总是必须明确地将我的SSIS变量转换为适当的C#数据类型对应物?

1 个答案:

答案 0 :(得分:1)

做一点研究,我相信我可以回答我自己的问题。看起来SSIS包和脚本任务代码没有以相同的方式看到变量。该变量将被视为SSIS包中的类型字符串,但同一个变量将被视为C#(或VB)脚本中的对象。

来自microsoft的网站:http://msdn.microsoft.com/en-us/library/ms135941(d=printer).aspx

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

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