对于自定义 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
我根据这篇文章创建了一个自定义 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