Wie lade/importiere ich eine DLL mit MEF aus der Metro-App?
-
12-12-2019 - |
Frage
Ich habe versucht, mit MEF eine erweiterbare Metro-App zu schreiben.Ich habe es mit einer lokalen Erweiterung (innerhalb der aktuellen Assembly) zum Laufen gebracht.Jetzt möchte ich eine externe DLL laden.Der DirectoryCatalog
scheint in .net 4.5 nicht vorhanden zu sein.Also habe ich versucht, es zu verwenden ApplicationCatalog
aber ich habe beim Anruf die folgende Fehlermeldung erhalten SatisfyImportsOnce
: Assembly.LoadFrom is not supported in AppX.
.
Hier ist mein Code:
var catalog = new AssemblyCatalog(GetType().GetTypeInfo().Assembly);
ApplicationCatalog catApp = new ApplicationCatalog();
AggregateCatalog cat = new AggregateCatalog(catalog, catApp);
_compositionService = cat.CreateCompositionService();
_compositionService.SatisfyImportsOnce(this);
Irgendwelche Vorschläge, was falsch läuft?
Ich habe die DLL im Appx-Verzeichnis abgelegt und VS11 Beta als Administrator ausgeführt.
Lösung 2
Ich habe mit einem Unterstützer in den MEF-Foren gesprochen und er bestätigt, dass ApplicationCatalog nicht aus einer Metro-App heraus verwendet werden konnte.Diese Frage ist also nicht lösbar, könnte aber abgeschlossen werden.Quellthread
Andere Tipps
Ihre externe Bibliothek reicht außerhalb der zulässigen Sandbox von Metro.Das .NET-Framework in der Metro-Umgebung ist begrenzt, ähnlich wie das WP7- oder Micro-Framework.Es werden viele Dinge geschnitten.Wenn Ihre externe DLL nicht mit diesen eingeschränkten Bibliotheken erstellt wird, lässt der Compiler ihre Verwendung nicht zu.