Updating Custom Assembly References in SSIS

Just a quick tip related to a recent problem I had with a custom task I developed for SSIS. I had to recompile it recently, and in the process, managed to change the public key associated with the assembly. Since SSIS uses strong names (which include the public key) to reference custom tasks, this caused a bit of a problem. None of the packages that used the custom task would execute properly, and I really didn’t want to go through 20+ packages and delete the task, then add it back and try to remember how it was set up in each package. Fortunately, fixing this was much simpler. I opened one of packages in the XML view, located the original strong name (which looks something like this “Mariner.Pamlico.ETL.ControlFlowTasks.CustomTask, Mariner.Pamlico.ETL.ControlFlowTasks, Version=1.0.0.0, Culture=neutral, PublicKeyToken=73ea249dd43ab42e”), and did a search and replace on all the packages to update the reference with the new public key. I could then execute all my packages without any problems, and they all retained their original settings.

Like I said, just a quick tip if you ever have to update multiple packages to reference a new version of a custom task or component. A few words of warning – before updating the XML of a package directly, it’s always a good idea to make a backup. Also, this works as long as you haven’t changed the public interface for the task. If you have removed properties, it’s likely to cause new and interesting errors when you attempt to open the package in BIDS.

2 Comments

  1. toddmcdermid says:

    Thanks for the nudge, John – I should have known that, but hadn’t thought of it. I’ve railroaded my Kimball SCD beta testers into just this situation inadvertently – and this gives them a way out!

    A note on your caveat about having changed the component metadata (adding and removing properties): If you code your PerformUpgrade (for DataFlow components) or Update (for Tasks) method properly, your component should handle itself fine. (Unfortunately, the Task’s Update method is pure XML manipulation.)

  2. jwelch says:

    Yes, I should have included that bit about Update. Thanks for the reminder.

Leave a Reply