The other day I was working with a customer who was in the process of developing SSIS "Control Flow" custom component. He was having an issue in compiling/building his code in Visual Studio and getting

Warning about the build process about indirect dependency on the .NET Framework assembly due to SSIS references.

Error:

The primary reference "Microsoft.SQLServer.ManagedDTS, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL" could not be resolved because it has an indirect dependency on the .NET Framework assembly "mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" which has a higher version "2.0.3600.0" than the version "2.0.0.0" in the current target framework.

The cause and resolution of this error as it is explained by our escalation engineer Jason at: http://blogs.msdn.com/b/jason_howell/archive/2010/08/18/visual-studio-2010-solution-build-process-give-a-warning-about-indirect-dependency-on-the-net-framework-assembly-due-to-ssis-references.aspx

As per the article this problem affects machines where SQL Server 2005 was once installed. Even if SQL Server 2008 or SQL Server 2008 R2 is currently installed, if at some point SQL Server 2005 was installed in the past, the problem assembly may exist in the Globally Assembly Cache (GAC). The problem is related to the way assemblies reference the SQL Server 2005 version of Microsoft.SQLServer.msxml6_interop.dll. That msxml_interop assembly in turn references mscorlib.dll that is version 2.0.3600, which is the prerelease Beta 2 of .NET 2.0.

The resolution of this issue is update the version of the Microsoft.SQLServer.msxml6_interop.dll in the GAC with a copy of the file from SQL Server 2008 installation that has the correct references to .Net 2.0 RTM (ie. get rid of the beta reference). My customer did not have SQL Server 2008 and he was not ready to buy SQL Server 2008 only to get this DLL.

I am going to talk about how you can get Microsoft.SQLServer.msxml6_interop.dll without buying SQL Server 2008 or 2008 R2.

SQL 2008 Management Studio Express which is free download has this DLL. You can get it by following the steps below:

a) You can install SQL 2008 Management Studio Express on a machine where you do not have SQL 2005 installed, Management Studio Express can be found at: http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=7593.

b) This will install Microsoft.SqlServer.Msxml6_interop.dll into GAC.

c) If you want to get a copy of this dll then you can copy GAC dll using the command:

xcopy c:\windows\assembly\*Microsoft.SQLServer.msxml6_interop.dll* C:\GACCopy\/s/r

d) The dll will be in the folder at: C:\GACCopy\GAC_MSIL\Microsoft.SqlServer.Msxml6_interop\6.0.0.0__89845dcd8080cc91

Install this copy the DLL into the GAC on the machine where Visual Studio is used to build the solutions. If you have any issue in installing the DLL in GAC, Jason’s article has some tips.

 

Author : Faiz (MSFT), SQL Developer Engineer