How can MEF resolve dependencies of assemblies that don't live at the root of the application?

StackOverflow https://stackoverflow.com/questions/7533233

  •  26-01-2021
  •  | 
  •  

Question

I have written my application to be a class library that is launched by a win32 MFC application. Each of my views is a separate assembly that is located with the base class library that is located in a sub-directory of the hosted MFC application.

My question is, how can I get MEF to resolve the dependencies of my exported classes using the assemblies from this sub-directory instead of the root directory?

This is what I want:

ParentFolder
 myapp.exe
 SubFolder
     myMvvmWindow.dll
     myMvvmSubWindow.dll
     *Microsoft.Expression.Interactions.dll*

This is what I have to have now:

  ParentFolder
     myapp.exe
     *Microsoft.Expression.Interactions.dll*
     SubFolder
         myMvvmWindow.dll
         myMvvmSubWindow.dll
Was it helpful?

Solution

You can also do this in your app.config file:

Is it possible to set assembly probing path w/o app.config?

This is generally how I handle it.

OTHER TIPS

MEF will not handle this scenario for you, as it uses the CLR's normal assembly loading mechanisms to find dependencies.

However, you can easily work around this for a specific subdirectory by handling AppDomain.AssebmlyResolve. If you check your sub folder for the assemblies that don't resolve in your main directory, you can load them yourself and make this function properly.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top