I create a Custom SSIS Task according to this article: Developing a Custom SSIS Source Component
Now, after compiling the DLL I need to put it into the PipelineComponents folder of the relevant SQL Server Version. The article states that I also have to register in in the GAC. (in "Deploying the custom component" section)
Why do I need to put it into two different locations ?
First, you have to copy the DLL to the {{ SQLServer Installation Folder}}\110\DTS\ PipelineComponents
, because on visual studio startup, the ssis toolbox components are read from this location.
Second, you have to copy these DLL's to GAC, because the visual studio used search for DLL's on GAC when executing the package or when deploying.
So we can say that the first location is to allow using the DLL in design mode, the second location is for executing and deploying the package.
Side Note (The GAC definition):
"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