3rd party DLL's - how to get my FIM and my custom MA to find/acknowledge them?

Hi!

I'm in the process of developing a new MA in C#. This MA makes use of some 3rd party DLLs. The DLL's are properly referenced in Visual Studio (otherwise it would be impossible to compile the code that makes use of classes found in thnem). The build places the MA's DLL into

However, when I try to run an export with my MA (which makes use of classes in these DLLs), I get the following error:

Retrieving the COM class factory for component with CLSID {64727891-7FFF-11D2-BB3A-00104B6564E2}
failed due to the following error: 80040154 Class not registered (Exception from HRESULT:
0x80040154 (REGDB_E_CLASSNOTREG)).

The Internet's primary suggeston for solving this is to register the DLLs with regsrv32, but this isn't possible with these DLLs due to them not having been compiled with the interfaces for doing registering (a point I will raise with the people who have made them).

However, I also have a small command-line application that I use to specifically test connecting to the new external system that makes use of these same DLL's, and that application is working fine and seemingly fully able to load the classes made available by the DLLs.

So my question is, does anyone have any recommendations for what I can do to get FIM to find/include these DLL's when it is using my MA? Is there any particular directory these DLLs should be placed in or any configuration I need to set up?

June 25th, 2015 4:06am

Have you registered the DLLs? Check and register with gacutil.exe.
Free Windows Admin Tool Kit Click here and download it now
June 25th, 2015 6:51am

There are 3 DLLs that I am using directly, (and I know that these have 2 more DLLs that they depend on.)

gacutil.exe failed on 2 of the 3 (in both cases with error message "Failure adding assembly to the cache: Attempt to install an assembly without a strong name") and was succesful on the 3rd. The MA still reports the same problems.

The biggest mystery to me is why things are working for my console application and not for FIM; any insights why this is?

June 25th, 2015 9:37am

Do you know which platform (x86 or x64) those DLLs were built for?  Make sure your C# project is configured to build for that platform (or Any CPU).

Are each of the 3 DLLs you're referencing (including the 2 dependent DLLs) .NET assemblies and not COM DLLs?

Regards

Justin

Free Windows Admin Tool Kit Click here and download it now
June 29th, 2015 9:13pm

These are all DLLs that we have received from a 3rd party vendor. I suspect they are x86 based on the errors we have been seeing, but I imagine there is a way to verify that for sure? I also don't know how to distinguish between assmblies and COM DLLs, so any pointers, both for how to find out and for which differences menas for using tnem in a FIM context, are much appreciated
June 30th, 2015 3:35am

Find the utility ILDASM.EXE in your .NET framework folder (IL disassembler).  Run it and open one of the DLLs.  If it's a COM DLL the utility will report "no valid CLR header".

You can then use DUMPBIN.EXE /HEADERS to get the platform the DLL was built with.

Free Windows Admin Tool Kit Click here and download it now
June 30th, 2015 9:56pm

This topic is archived. No further replies will be accepted.

Other recent topics Other recent topics