如何在SSIS ScriptTask中引用.NET Standard类库?
解决VS2015 SSIS ScriptTask引用.NET Standard类库的问题
我之前也碰到过一模一样的坑,在VS2015的SSIS脚本任务里引用.NET Standard类库确实需要绕几个弯,不过最后还是成功跑起来了,分享下亲测有效的解决步骤:
1. 锁定.NET Standard类库版本
确保你的类库是**.NET Standard 2.0版本**——VS2015对2.0以上的.NET Standard版本支持非常有限,2.0是兼容性最好的选择。
2. 正确添加引用(避免直接项目引用)
不要直接在ScriptTask的脚本项目里添加.NET Standard DLL的引用,建议用手动复制+配置的方式:
- 把你的.NET Standard类库输出DLL,以及它依赖的
netstandard.dll(找2.0版本,可从类库输出目录或NuGet缓存中获取)复制到SSIS包项目下的专属文件夹(比如新建Libs目录)。 - 打开ScriptTask的脚本编辑界面,在解决方案资源管理器中找到对应的C#/VB项目,右键选择「添加→现有项」,把刚才复制的DLL添加进来。
- 选中这些DLL,在属性面板设置「复制到输出目录」为始终复制。
3. 调整ScriptTask项目的目标框架
VS2015的SSIS ScriptTask默认可能用的是较低版本的.NET Framework,而.NET Standard 2.0要求至少.NET Framework 4.6.1:
- 右键ScriptTask的脚本项目 → 「属性」→ 「应用程序」选项卡,将「目标框架」改为**.NET Framework 4.6.1**或更高版本。
4. 处理运行时依赖
SSIS运行时可能找不到.NET Standard相关的DLL,需要手动部署到运行目录:
- 本地调试时,把类库DLL和
netstandard.dll复制到SSIS的Binn目录,比如SQL Server 2016对应的路径是C:\Program Files (x86)\Microsoft SQL Server\130\DTS\Binn。 - 部署到服务器时,同样把这些DLL放到服务器对应的SSIS Binn目录,或者通过GAC安装(复制文件的方式更简单直接)。
5. 排查代码兼容性
检查ScriptTask中使用.NET Standard类库的代码,避免调用.NET Framework不兼容的API。如果遇到特定API报错,可以尝试给ScriptTask的脚本项目安装NETStandard.Library NuGet包,补充兼容性依赖。
额外建议
如果条件允许,升级到VS2017及以上版本会省心很多——后续版本对.NET Standard和SSIS的集成做了不少优化,能避免很多这类兼容性问题。
内容的提问来源于stack exchange,提问作者Hossein Narimani Rad
相关产品推荐
相关产品推荐

