views:

25

answers:

1

Hello everybody,

imagine the following scenario:

  • Assembly "Foo.dll" references the ADOX-Library (Microsoft ADO Ext. 2.8 for DDL and Security) which was added as Interop.ADOX.dll in the bin-directory by VS 2010. "Local copy" of this reference was set to true, too.

  • Assembly "Bar.exe" references both Foo.dll and additionally the ADOX-Library because some functionality from it is needed in Bar.exe

  • Both assemblies are signed

When "Local copy" of the ADOX-reference in Bar.exe is set to true as well, MS Build generates the warning 3181 - "Two or more files have the same target path" - which makes sense.

However, when I set "Local copy" of the ADOX-reference in Bar.exe to false, it compiles fine but upon startup of the application, an error is raised saying that the assembly Interop.ADOX could not be found and that the manifest definition of the assembly doesn't match the assembly reference.

I suppose I'm missing something rather simple here, but I was unable to solve my problem with Google. I'd be thankful for solutions or hints into the right direction :)

Cheers

Christian

A: 

Not sure why the EXE project didn't create the interop library. But punt this problem. Instead of having the EXE project reference ADO again, let it reference the interop library that was created by the DLL project.

Not exposing the ADO types in a public class would be the better solution. ADO Ext is a utility bag, you should be able to encapsulate it well enough.

Hans Passant
Thank you for your reply, I'll try your suggestion with referencing the Interop-dll
Christian
That did the trick, thank you :)
Christian