Tuesday, March 24, 2015

Third Party dll in SSIS Projects

I came across a requirement to access third party dlls in SSIS Package. which is fairly easy. the tricky part is where to deploy those third party dlls. In almost all the blogs that i came across while search the solution, I was told to deploy them in GAC. Which I don't think ideal solution in all the environment. Let me move to solution directly.

- Create a parameter that hold the directory which has all the third party files.
- Pass the variable name in Script
- In your Script, add following line.
 AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);

best place to add this is in PreExecute. This will call the attached event handler whenever it will try to load a third party dll.

And add the related event handler in the same class.

Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
    {
       
        if(args.Name.IndexOf("MyCustomDll1.dll")>0)
            return Assembly.LoadFile(Path.Combine(Variables.SupportDirectory,"MyCustomDll1.dll"));
        else if(args.Name.IndexOf("MyCustomDll2.dll")>0)
            return Assembly.LoadFile(Path.Combine(Variables.SupportDirectory,"MyCustomDll2.dll"));
        else
            return Assembly.GetExecutingAssembly();
    }
It is important to return the executing assembly in else.

 -That's it. now it will load all the dll from the folder that you have specified. You just need to make sure that the files exist in that folder.

Thanks,
HP

No comments:

Post a Comment