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

For a custom SSIS component, why do I have to put it into GAC?

我根据这篇文章创建了一个自定义 SSIS 任务:Developing a Custom SSIS Source Component

现在,在编译完 DLL 后,我需要将其放入相关 SQL 服务器版本的 PipelineComponents 文件夹中。文章指出我还必须在 GAC 中注册。 (在 "Deploying the custom component" 部分)

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

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

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

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


旁注(GAC 定义):

"The Global Assembly Cache (GAC) is a machine-wide CLI assembly cache for the Common Language Infrastructure (CLI) in Microsoft's .NET Framework. The approach of having a specially controlled central repository addresses the flaws in the shared library concept and helps to avoid pitfalls of other solutions that led to drawbacks like DLL hell" Read more