如何通过编程方式为SSIS Script Task添加外部DLL引用?
程序化给SSIS ScriptTask添加外部DLL引用
核心解决方案:利用VstaHelper的引用管理方法
你已经通过LoadNewProject和AddFileToProject完成了脚本项目的创建与主脚本添加,要实现程序化添加外部DLL引用,关键是调用VstaHelper内置的引用操作方法。由于你的DLL已部署到GAC,我们可以直接通过强名称全名来引用它,这是最适配GAC场景的可靠方式。
代码实现示例
在你加载项目的代码之后,插入以下代码即可完成引用添加:
// 加载脚本项目 task.ScriptingEngine.VstaHelper.LoadNewProject(task.ProjectTemplatePath, null, "MyScriptProject"); // 添加GAC中的DLL引用——替换为你的DLL的强名称全名 string ourLibraryStrongName = "OurLibrary, Version=1.0.0.0, Culture=neutral, PublicKeyToken=abc123def456"; task.ScriptingEngine.VstaHelper.AddReference(ourLibraryStrongName); // 继续添加主脚本文件 task.ScriptingEngine.VstaHelper.AddFileToProject(ScriptName + ".cs", MainScript.ToString());
如何获取DLL的强名称全名
如果不确定强名称信息,可以通过两种方式获取:
- 打开命令提示符,运行
gacutil -l OurLibrary(需安装.NET SDK并将gacutil加入系统PATH) - 在Visual Studio中,右键已添加的该DLL引用,查看属性面板里的「全名」字段
替代方案:本地文件路径引用
如果你的DLL同时存在本地副本,也可以直接通过文件路径引用:
string dllLocalPath = @"C:\Your\DLL\Path\OurLibrary.dll"; task.ScriptingEngine.VstaHelper.AddReferenceFromFile(dllLocalPath);
不过既然已部署到GAC,优先使用强名称引用会更稳定,避免路径变动导致的问题。
关键注意事项
- 必须确保你的DLL是强命名的(GAC对组件有强命名要求),否则无法通过强名称完成引用
- 添加引用后,脚本中的
using OurLibrary;语句就能被正确识别,编译时不会再出现无法识别的错误 AddReference的调用时机需在LoadNewProject之后,在AddFileToProject之前或之后执行都可以,推荐加载项目后立即添加引用,保证脚本编译时能找到依赖
内容的提问来源于stack exchange,提问作者Stavros Koureas
相关产品推荐
相关产品推荐

