Getting your SSIS custom extensions to be supported by the multi-version support of SSDT 2015 for SQL Server 2016
Published Mar 25 2019 04:01 PM 2,788 Views
Copper Contributor
First published on MSDN on Apr 19, 2016
We recently released the multi-version support (also known as One Designer) in SSDT 2015, which allows SSIS developers to author, execute, deploy and debug multiple versions of SSIS package from a single version of SSDT designer. With the latest SSDT 2015, SSIS developers can switch the “Target Server Version” property to specify the version of which SSIS package is executed and deployed on. Today, we will show you how to get your custom extensions to be supported by the multi-version support in SSDT 2015.

Having your assemblies in the appropriate folder

First, you need to make sure you build your custom components for each supported versions of SSIS (e.g. SSIS 2012 components, SSIS 2014 components).  For each version, you also need to make sure your custom components assemblies references to the correct version of the SSIS assemblies (e.g. Your SSIS 2012 custom component should only reference to the SSIS 2012 Microsoft.SqlServer.ManagedDTS.dll). Then you need to put your extension assemblies in task version folder as well as GAC. For example:

-          For SSIS 2012 custom tasks, you need to put in the use %programfiles(x86)%\Microsoft SQL Server\110\DTS\Tasks folder.

-          For SSIS 2014 custom components, you need to put in the %programfiles(x86)%\Microsoft SQL Server\120\DTS\Tasks folder

-          For SSIS 2016 custom components, you need to put in the %programfiles(x86)%\Microsoft SQL Server\130\DTS\Tasks folder

Adding extension map file for SSIS 2014 and 2016

Starting from SSIS 2014, custom component developers are required to set an “alias” for each extension. The mapping between the alias and the extension is called “extension mapping”. In %programfiles(x86)%\Microsoft SQL Server\{version}\DTS\UpgradeMappings folder, you can find an “extension.xml” file, which contains all extension mapping for all extensions in the product. You also need to add a new extension map file for your extensions. Below is an example of the extension mapping:

<?xml version="1.0" encoding="utf-8"?>
<Extensions xmlns="">
<PipelineComponent Identifier="Martin.MultiHash" Model=".NET">
<CreationName>Martin.SQLServer.Dts.MultipleHash, MultipleHash2014, Version=, Culture=neutral, PublicKeyToken=51c551904274ab44</CreationName>
<TypeConverter name="MultipleThreads">Martin.SQLServer.Dts.MultipleHash+MultipleThread, MultipleHash2014, Version=, Culture=neutral, PublicKeyToken=51c551904274ab44</TypeConverter>
<TypeConverter name="SafeNullHandling">Martin.SQLServer.Dts.MultipleHash+SafeNullHandling, MultipleHash2014, Version=, Culture=neutral, PublicKeyToken=51c551904274ab44</TypeConverter>
<TypeConverter name="IncludeMillsecond">Martin.SQLServer.Dts.MultipleHash+MillisecondHandling, MultipleHash2014, Version=, Culture=neutral, PublicKeyToken=51c551904274ab44</TypeConverter>

Once you have updated the extension mapping file and ensured all the custom component assemblies in the appropriate folder, your custom component can now work with the new multi-version support of SSDT 2015!

Version history
Last update:
‎Mar 25 2019 04:01 PM
Updated by: