我不断收到以下错误,一直无法弄清楚。我想知道是否有人可以提供帮助。
错误: 无法加载模块 MyExternalAssembly.MyNamespace.MyModule 的类型。
如果在 Silverlight 应用程序中使用 MEF 时发生此错误,请确保对 MefExtensions 程序集的引用的 CopyLocal 属性在主应用程序/shell 中设置为 true,在所有其他程序集中设置为 false。
错误是:无法从加载的程序集中检索模块类型 MyExternalAssembly.MyNamespace.MyModule、MyExternalAssembly.MyNamespace、Version=1.0.0.0、Culture=neutral、PublicKeyToken=null。您可能需要指定更完全限定的类型名称..
代码:
加载屏幕(加载模块,存储用于各种用途的程序集参考)
string[] dynamicLibraries = Directory.GetFiles(pluginDirectory, "*.dll", SearchOption.AllDirectories);
// Parse through the DLL's and look for types that implement "IModule".
foreach (string file in dynamicLibraries)
{
// Get the plugin assembly information.
Assembly plugin = Assembly.LoadFile(file);
// Get all types that are exported for plugins.
IEnumerable<Type> modules = plugin.GetTypes()
.Where(t => typeof(IModule).IsAssignableFrom(t));
if (modules.Count() > 0)
{
ApplicationState.Instance.Plugins.Add(plugin, modules);
}
}
这是 ConfigureModuleCatelog 方法
protected override void ConfigureModuleCatalog()
{
base.ConfigureModuleCatalog();
ModuleCatalog catalog = (ModuleCatalog)this.ModuleCatalog;
foreach (var assembly in ApplicationState.Instance.Plugins)
{
foreach (var type in assembly.Value)
{
this.ModuleCatalog.AddModule(new ModuleInfo
{
ModuleName = type.FullName,
ModuleType = type.AssemblyQualifiedName,
Ref = new Uri(assembly.Key.Location, UriKind.RelativeOrAbsolute).AbsoluteUri,
InitializationMode = InitializationMode.WhenAvailable
});
}
}
}
基本上,我需要一种方法来维护/使用这个“插件”字典并让模块化正确地 wprk。和想法?
谢谢!