【发布时间】:2019-04-04 13:13:10
【问题描述】:
在编写 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# 数据类型对应项?
【问题讨论】:
-
当我打开脚本时,它会给出一些注释,例如:从 DTS 变量集合中赋值;这是区分大小写的;用户:: 不是必需的;您必须将其从 Object 类型转换为强类型;所以我猜你必须转换。
-
懒得回答,所以你得到评论。变量在脚本组件(数据流对象)中是强类型的。在 Script Task 中,它作为 Object 类型从对象集合中返回,并且必须强制转换为特定类型才能使用。为什么会这样是 MS 开发人员的问题。