【问题标题】:SSIS string type variable not recognized as type string in C# script taskSSIS 字符串类型变量在 C# 脚本任务中未被识别为类型字符串
【发布时间】: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 开发人员的问题。

标签: c# ssis


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-07
    • 2019-06-07
    • 2023-01-29
    • 1970-01-01
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多