Comment charger/importer une DLL avec MEF hors de l'application Metro ?
-
12-12-2019 - |
Question
J'ai essayé d'écrire une application métro extensible en utilisant MEF.Je l'ai fait fonctionner avec une extension locale (à l'intérieur de l'assembly actuel).Maintenant, je veux charger une DLL externe.Le DirectoryCatalog
ne semble pas être présent dans .net 4.5.J'ai donc essayé d'utiliser ApplicationCatalog
mais j'ai eu l'erreur suivante en appelant SatisfyImportsOnce
: Assembly.LoadFrom is not supported in AppX.
.
Voici mon code :
var catalog = new AssemblyCatalog(GetType().GetTypeInfo().Assembly);
ApplicationCatalog catApp = new ApplicationCatalog();
AggregateCatalog cat = new AggregateCatalog(catalog, catApp);
_compositionService = cat.CreateCompositionService();
_compositionService.SatisfyImportsOnce(this);
Des suggestions, qu'est-ce qui ne va pas ?
J'ai placé la DLL dans le répertoire Appx et exécuté VS11 Beta en tant qu'administrateur.
La solution 2
J'ai parlé à un supporter sur les forums MEF et il confirme qu'ApplicationCatalog ne pouvait pas être utilisé à partir d'une application métropolitaine.Cette question ne peut donc pas être résolue mais pourrait être close.Sujet source
Autres conseils
Votre bibliothèque externe s'étend en dehors du bac à sable autorisé de Metro.Le framework .NET dans l'environnement Metro est limité, similaire au WP7 ou au Micro Framework.Il y a beaucoup de choses coupées.Si votre DLL externe n'est pas construite à l'aide de ces bibliothèques contraintes, le compilateur interdira son utilisation.