SSIS脚本报错:命名空间不存在,NuGet包修复后问题反复
解决SSIS脚本任务中NuGet包引用失效问题
问题根源
SSIS的脚本任务不支持NuGet包的自动引用同步,即便通过NuGet安装了包,关闭脚本编辑器后引用会丢失,运行时也因找不到依赖DLL而失败。
具体解决步骤
1. 手动添加程序集引用
- 打开脚本任务编辑器,进入「编辑脚本」界面
- 在解决方案资源管理器中右键点击脚本项目 →
添加→引用 - 切换到「浏览」标签页,找到NuGet包安装后的DLL路径:
System.IdentityModel.Tokens.Jwt的路径通常为项目目录\packages\System.IdentityModel.Tokens.Jwt.x.x.x\lib\net462(根据你的.NET版本和包版本调整)System.Text.Json的路径类似项目目录\packages\System.Text.Json.x.x.x\lib\net462(解决JsonSerializer和JsonElement的报错)
- 选中对应DLL后点击「确定」完成引用添加
2. 设置「复制本地」为True
- 在引用列表中选中刚添加的
System.IdentityModel.Tokens.Jwt和System.Text.Json - 在属性窗口中,将「复制本地」设置为
True - 此操作会让编译后的DLL复制到SSIS包的输出目录,确保运行时能找到依赖
3. 补充命名空间引用
在脚本代码头部添加必要的using语句:
using System.Text.Json; using System.IdentityModel.Tokens.Jwt;
4. 保存并验证
- 编译脚本,确认无报错后关闭脚本编辑器
- 运行SSIS包,测试脚本任务是否正常执行
- 再次打开脚本编辑器,检查引用是否保留、代码是否无报错
额外注意事项
- 若使用旧版SQL Server Data Tools(SSDT),需确保包的目标.NET版本与NuGet包支持的版本匹配(例如SSIS 2019对应.NET Framework 4.7.2)
- 若问题仍存在,可尝试手动将DLL复制到SSIS运行时目录(通常为
C:\Program Files\Microsoft SQL Server\150\DTS\Binn,根据SQL Server版本调整150为对应版本号)
内容的提问来源于stack exchange,提问作者William Zorn
相关产品推荐
相关产品推荐

