2010-04-30 4 views
2

En ce moment, j'essaie de séparer un ensemble de classes en constante évolution dans leur propre DLL et les charger dynamiquement en utilisant MEF. Mon problème est que chaque fois que j'essaye d'écraser la DLL pendant que l'application fonctionne, elle dit qu'elle est en cours d'utilisation.Écriture de DLLs dans MEF

Est-il possible de configurer MEF de manière à ce que je remplace la DLL et que je récupère les modifications alors que l'application est toujours en cours d'exécution?

Répondre

4

Il ne s'agit pas d'un problème MEF. Il s'agit du paramétrage standard de votre domaine d'application qui verrouille les touches de la DLL. Vérifiez http://www.vistax64.com/powershell/26164-reflection-assembly-loadfile-locks-file.html pour un problème similaire qui ne concerne pas MEF.

Fondamentalement, ne fonctionnent pas sur les dll, faire une copie et de travailler sur la copie;)

Vérifier http://bartdesmet.net/blogs/bart/archive/2006/07/29/4146.aspx pour le mécanisme AppDomain ShadowCopy;)

+0

Je suis confus ici - vous dites MEF est le mauvais outil pour une situation décrite dans le lien ShadowCopy? (Je fais un service Windows). Je pensais qu'il a été développé précisément afin que vous puissiez remplacer dll sans arrêter une application. –

+0

MEF - après l'identification - charge les assemblages en utilisant la configuration standard de l'AppDomain. Si le AppDomain n'est pas configuré pour utiliser le cliché instantané, il n'utilisera pas de cliché instantané. – TomTom

2

I suspecte cela fonctionnera si vous déchargez complètement AppDomain qui fait actuellement référence à la DLL.