J'essaie le cadre d'extensibilité géré pour la première fois dans Visual Studio 2010 beta 2 à l'aide de System.ComponentModel.Composition à partir de .net-4.0.Demander à MEF d'utiliser tous les assemblages disponibles
Je n'ai pas réussi à obtenir le composant CompositionContainer pour trouver mes assemblys d'implémentation en utilisant les deux routines alternatives ci-dessous.
Première tentative (cela a fonctionné dans une ancienne version CodePlex du MEF):
var composition = new CompositionBatch();
composition.AddPart(this);
var container = new CompositionContainer(new DirectoryCatalog(AppDomain.CurrentDomain.BaseDirectory));
container.Compose(composition);
deuxième tentative (cela a fonctionné en version bêta 1, je pense):
var aggregateCatalog = new AggregateCatalog(
new AssemblyCatalog(Assembly.GetExecutingAssembly()),
new DirectoryCatalog(AppDomain.CurrentDomain.BaseDirectory));
var compositionContainer = new CompositionContainer(aggregateCatalog);
compositionContainer.ComposeParts(this);
Y at-il une nouvelle façon faire cela en beta 2?
EDIT: Cela n'a rien à voir avec la composition. J'ai eu une propriété statique représentant ma mise en œuvre importée:
[Import] public static ILog Log { get; set; }
qui aurait dû être:
[Import] public ILog Log { get; set; }
Je marqué la réponse de Daniel acceptée parce que le sage conseil de débogage d'une façon plus approfondie a résolu le problème.
J'utilise Beta 2 pour quelques semaines et ont été en utilisant votre 2ème exemple sans aucun problème. Avez-vous des pièces internes dans votre assemblage en cours d'exécution ou sont-elles simplement situées dans BaseDirectory? Avez-vous été en mesure de confirmer à quoi correspond AppDomain.CurrentDomain.BaseDirectory lors de l'exécution? En outre, la classe qui contient les extraits ci-dessus contient-elle des importations déclarées? Juste en faisant attention car rien ne sera ramassé si l'instance de la classe (this) n'a pas d'importations – JamesEggers
Je dois faire quelque chose de daft. Les implémentations sont simples pendant que j'essaye de le faire fonctionner. BaseDirectory est valide, la classe a les importations. Pourtant, un peu plus de tête et je vais y arriver à la fin. – grenade
Quelqu'un peut-il expliquer pourquoi il n'est pas possible d'utiliser [Import] pour une propriété statique? – Dave