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
  •  | 
  •  

Pergunta

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
Foi útil?

Solução

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.

Outras dicas

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top