对于自定义的SSIS组件,为什么我必须将其放入GAC中?

Mat*_*ias 5 sql-server ssis etl gac visual-studio

我根据这篇文章创建一个自定义SSIS任务:开发自定义SSIS源组件

现在,编译 DLL 后,我需要将其放入相关 SQL Server 版本的 PipelineComponents 文件夹中。文章指出我还必须在 GAC 中注册。(在“部署自定义组件”部分)

为什么我需要将它放在两个不同的位置?

Had*_*adi 3

首先,您必须将 DLL 复制到{{ SQLServer Installation Folder}}\110\DTS\ PipelineComponents,因为在 Visual Studio 启动时,将从该位置读取 ssis 工具箱组件。

其次,您必须将这些 DLL 复制到 GAC,因为 Visual Studio 在执行包或部署时会在 GAC 上搜索 DLL。

所以我们可以说第一个位置是允许在设计模式下使用 DLL,第二个位置是用于执行和部署包。


旁注(GAC 定义):

“全局程序集缓存 (GAC) 是 Microsoft .NET Framework 中公共语言基础结构 (CLI) 的机器范围 CLI 程序集缓存。拥有专门控制的中央存储库的方法解决了共享库概念中的缺陷,并有助于避免其他解决方案的陷阱,这些解决方案会导致 DLL 地狱等缺陷”阅读更多