Я регистрирую свои представления модулей в методе Initialize класса модуля таким образом;PRISM: Как внедрить RegisterViewForNavigation внутри метода Initialize модуля?
//CalendarModule.cs
public void Initialize()
{
_container.RegisterType<object, CalendarModuleView>(nameof(CalendarModuleView));
}
И загружаю модули, позвонив по номеру ModuleManager.LoadModule("CalendarModule");
. После инициализации модуля я перехожу к моему недавно загруженному модулю;
_regionManager.RequestNavigate(RegionNames.MainContentRegion, "CalendarModuleView");
До сих пор никаких проблем. Все, что я ожидал, все работает. Я могу перемещаться по всем модулям по требованию.
Но когда я пытаюсь заменить регистрацию вида на _container.RegisterTypeForNavigation<CalendarModuleView>();
, я получаю следующую ошибку при загрузке модуля;
Исключение типа «Prism.Modularity.ModuleInitializeException» произошло в Prism.Wpf.dll, но не был обработан в пользовательском коде
Дополнительная информация: Исключение при инициализации модуля «CalendarModule».
Внутреннее исключение: {"Не удалось загрузить файл или сборку" Prism.Unity.Wpf, Version = 6.2.0.0, Culture = neutral, PublicKeyToken = 91a96d2a154366d8 'или одна из его зависимостей. Определение манифеста расположенной сборки не соответствует опорный узел (Исключение из HRESULT: 0x80131040). ":" Prism.Unity.Wpf, Version = 6.2.0.0, культура = нейтральной, PublicKeyToken = 91a96d2a154366d8" }
Интересно, если RegisterTypeForNavigation<T>
контейнер метод расширения делает такая же работа с RegisterType<object, T>(nameof(T))
метод контейнера. Если да, что вызывает предыдущую ошибку? Благодаря!
FYI: Режим инициализации моих модулей - OnDemand.
Я использую Prism.Unity как контейнер DI.
Разверните ли вы Prism.Unity.Wpf.dll. Он существует в папке, откуда вы запускаете приложение? – Jehof
Я подозреваю, что вы используете разные проекты для «CalendarModule» и основного приложения? Если это так, попробуйте обновить пакеты prism nuget для каждого из них. – Domysee
@ Domysee Да, вы правы. Мои модули - отдельные проекты внутри решения. Я понял, что пакеты основных проектов были старыми. После обновления nuget проблема была решена. Спасибо! –