Мое решение содержит 4 проекта Silverlight - один основной, два модульных проекта и последний общий проект (для общих интерфейсов и т. Д.).
Основной и модульный проекты не имеют ссылок друг на друга (просто для совместного использования проекта).
Вы можете найти определения моих модулей ниже:
[ModuleExport("ServiceModule", typeof(ServiceModule), InitializationMode = InitializationMode.WhenAvailable)]
public class ServiceModule : IModule
[ModuleExport("ViewModule",
typeof(ViewModule),
DependsOnModuleNames = new string[] { "ServiceModule" },
InitializationMode = InitializationMode.WhenAvailable)]
public class ViewModule : IModule
И я добавил модули в ModuleCatalog в производный класс MefBootstrapper основного проекта (я использовал регистрацию кода модулей вместо метода CreateFromXaml):
protected override void ConfigureModuleCatalog()
{
ModuleCatalog.AddModule(
new ModuleInfo()
{
ModuleName = "ServiceModule",
ModuleType = "SilverlightEnabledService.ModuleDefinitions.ServiceModule, SilverlightEnabledService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=ca4f032071a86aea",
Ref = "SilverlightEnabledService.xap",
InitializationMode = InitializationMode.WhenAvailable
}
);
ModuleCatalog.AddModule(
new ModuleInfo()
{
ModuleName = "ViewModule",
ModuleType = "RedOrBlackModule.ModuleDefinitions.ViewModule, RedOrBlackModule, Version=1.0.0.0, Culture=neutral, PublicKeyToken=ca4f032071a86aea",
Ref = "RedOrBlackModule.xap",
InitializationMode = InitializationMode.WhenAvailable,
DependsOn = (new Collection<string>(new string[] { "ServiceModule" }))
}
);
}
Как видно из кода выше, имя модуля ModuleCtalog совпадает с именем модуля в ModuleExportAttribute, но я получаю исключение ниже:
Uncaught Ошибка: необработанная ошибка в приложении Silverlight Невозможно найти модуль с экспортированным модулем с типом SilverlightEnabledService.ModuleDefinitions.ServiceModule, SilverlightEnabledService, Version = 1.0.0.0, Culture = нейтральный, PublicKeyToken = ca4f032071a86aea ' Убедитесь, что имя модуля в каталоге модулей соответствует указанному в ModuleExportAttribute для типа модуля. в Microsoft.Practices.Prism.Modularity.ModuleInitializer.HandleModuleInitializationError (ModuleInfo moduleInfo, String assemblyName, Исключение исключения) ...
Кажется, это очень простая проблема, но я пока не могу найти решение.