Failed --Retrieving the COM class factory for component with CLSID ....
PROBLEM:
When you run the .net Code in X64 Environment you will get the following error message.
" Failed --Retrieving the COM class factory for component with CLSID ...."
E.g. in CMS Export / Import server side .net code = "ExportSiteContentIncremental(...) Failed --Retrieving the COM class factory for component with CLSID {CA0752B3-021C-4F99-82E3-2C0F19C5E953} failed due to the following error: 80040154."
WORKAROUND:
The possible workaround is modify your project's platform from 'Any CPU' to 'X86' (in Project's Properties, Build/Platform's Target)
ROOTCAUSE
The VSS Interop is a managed assembly using 32-bit Framework and the dll contains a 32-bit COM object. If you run this COM dll in 64 bit environment, you will get the error message.
Comments
Anonymous
December 09, 2006
L'altro giorno ho pagato le spese di un problema legato all'istanziazione di componenti COM, via COM-Interop,...Anonymous
March 01, 2007
The comment has been removedAnonymous
August 06, 2007
Hi is there any way to call the COM object therough some other method?Anonymous
March 08, 2008
PingBack from http://zayz.wordpress.com/2008/03/08/net-well-com-this/Anonymous
June 11, 2008
PingBack from http://www.newcodingjobs.com/c/fix-error-retrieving-the-com-class-factory.htmAnonymous
June 11, 2008
PingBack from http://www.newcodingjobs.com/c/fix-error-retrieving-the-com-class-factory-2.htmAnonymous
July 21, 2009
Thanks Karthi. This article helped me. I was running behind this problem for about a week. Is there a way this can be applied on ASP.Net application? I get the following error when I target it for x86 and use in ASP.net System.BadImageFormatException: Could not load file or assembly 'MyClassLibrary' or one of its dependencies. An attempt was made to load a program with an incorrect format. WRN: Assembly binding logging is turned OFF. To enable assembly bind failure logging, set the registry value [HKLMSoftwareMicrosoftFusion!EnableLog] (DWORD) to 1. Note: There is some performance penalty associated with assembly bind failure logging. To turn this feature off, remove the registry value [HKLMSoftwareMicrosoftFusion!EnableLog].Anonymous
April 10, 2012
Thanks I had the same error when trying to communicate with an agilent 34980A DMM instrument and I could not figure out why the sample code using VISA (text string based) interface worked and the Interop interface did not. Sure enough Any CPU changed to X86 did the trick. Thanks a bundle...Anonymous
April 12, 2012
I'm having the same issue now, but all my target builds are already set to x86. Its a Visual Studio 2010 winforms app which uses a third party dll. This dll has been added to the setup as an assembly and I've tried both "vsdraCOMRelativePath" and "vsdraDoNotRegister" with no luck, but I may be barking up the wrong tree!Anonymous
June 03, 2012
The Solution from this site worked... aspdotnet.hotinit.com/.../retrieving-com-class-factory-for.htmlAnonymous
June 06, 2013
Thanks for the info. Was struggling on this for many daysAnonymous
September 05, 2014
The comment has been removedAnonymous
July 29, 2015
Excellent! Our dev had been struggling with this for months