SSIS Script Task运行报未找到二进制代码且构建失败问题求助
问题根因
你遇到的两个报错本质是脚本编译失败导致无法生成二进制执行代码,核心问题有两个:
- 代码语法错误:else分支中SSIS变量引用分隔符写错,SSIS变量固定使用
::分隔命名空间与变量名,你写的User.strVar使用了.作为分隔符,导致Dts.Variables索引器无法匹配到对应变量,触发mscorlib层面的反射调用异常,直接导致构建失败 - 配置遗漏:Script Task没有将用到的
User::intVar、User::strVar添加到读写变量权限列表中,脚本运行时没有权限访问SSIS包级变量,也会导致构建或运行报错
解决步骤
- 修正代码语法,将else分支的错误引用替换为正确格式,修正后的完整代码如下:
public void Main() { if ((int)Dts.Variables["User::intVar"].Value >= 10) Dts.Variables["User::strVar"].Value = "Big"; else Dts.Variables["User::strVar"].Value = "Small"; MessageBox.Show(Dts.Variables["User::strVar"].Value.ToString()); Dts.TaskResult = (int)ScriptResults.Success; }
- 回到Script Task属性配置面板,找到
ReadWriteVariables属性,点击右侧的「...」按钮,在弹出的变量选择窗口中勾选User::intVar和User::strVar两个变量,确认后保存配置 - 重新打开脚本编辑器,点击顶部菜单栏「生成」→「生成ST_<你的脚本GUID>」,确认输出窗口无构建报错后,关闭脚本编辑器
- 运行包即可正常执行
若上述操作后仍有报错,可检查SSIS项目的目标.NET Framework版本与脚本项目的目标框架是否一致:SSIS 2016及以上版本仅支持.NET Framework 4.5+,不支持.NET Core/.NET 5+版本,将脚本项目的目标框架调整为和SSIS项目一致即可。
内容的提问来源于stack exchange,提问作者Arpit Chinmay
相关产品推荐
相关产品推荐

