2016-02-20 2 views
0

Когда мое модульное приложение Prism 6 WPF, использующее Unity, начинается с «Prism.Modularity.ModuleTypeLoadingException» в Prism.Wpf.dll бросается. Ниже снимок экрана, за исключением:'Prism.Modularity.ModuleTypeLoadingException' в Prism.Wpf.dll вызывается при запуске приложения Prism 6 WPF

enter image description here

Как вы можете видеть исключение кидает, когда метод Bootstrepper.Run называется. Ниже приведен код Botstrapper:

namespace FlowmeterConfigurator 
{ 
    class Bootstrapper : UnityBootstrapper 
    { 
     protected override DependencyObject CreateShell() 
     { 
      return Container.Resolve<MainWindow>(); 
     } 

     protected override void InitializeShell() 
     { 
      Application.Current.MainWindow.Show(); 
     } 

     protected override IModuleCatalog CreateModuleCatalog() 
     { 
      return new ConfigurationModuleCatalog(); 
     } 
    } 
} 

Решение моего приложения состоит из трех проектов: основной проект WPF создан с Prism шаблона пакета, как Prism Unity App и двух модулей, каждый из которых создан с Prism шаблона пакета, как Модуль призмы. Оба модуля регистрируются в App.config файле, пожалуйста, смотрите ниже:

<?xml version="1.0" encoding="utf-8" ?> 
    <configuration> 
     <configSections> 
      <section name="modules" type="Prism.Modularity.ModulesConfigurationSection, Prism.Wpf"/> 
     </configSections> 
     <modules> 
      <module assemblyFile="Authorization.dll" moduleType="Authorization.AuthorizationModule, Authorization, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" moduleName="AuthorizationModule" startupLoaded="true" /> 
      <module assemblyFile="Calibration.dll" moduleType="Calibration.CalibrationModule, Calibration, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" moduleName="CalibrationModule" startupLoaded="true" /> 
     </modules> 
     <startup> 
      <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> 
     </startup> 
    </configuration> 

Первый модуль называется санкционирования и его класс caled AuthorizationModule:

namespace Authorization 
{ 
    [Module(ModuleName = "AuthorizationModule", OnDemand = false)] 
    public class AuthorizationModule : IModule 
    { 
     . . . . . 
    } 
} 

Второй модуль называется калибровки и его класс называется CalibrationModule:

namespace Calibration 
{ 
    [Module(ModuleName = "CalibrationModule", OnDemand = false)] 
    public class CalibrationModule : IModule 
    { 
     . . . . . 
    } 
} 

Когда мое приложение начинается тогда MainWindow отображается на короткое время (менее 1 секунды), и после этого S hort временной интервал Бросок модуляTypeLoadingException, связанный с CalibrationModule. Похоже, этот тип для AuthorizationModule был загружен успешно, но загрузка типа для CalibrationModule не удалась. Пожалуйста, помогите мне устранить эту ошибку.

P.S. Я не определил какой-либо экземпляр IModuleManager в своем приложении. Может быть, я должен определить его где-нибудь в моем приложении?

+0

С этой информацией очень сложно догадаться, что произошло. Я рекомендую вам сравнивать имена в файле конфигурации и dll, которые вы пытаетесь установить. – Fka

+0

Являются ли ваши dll и exe в одной папке? – galakt

+0

Существуют библиотеки FlowmeterConfiguration.exe и DLL Microsoft и Prism в папке «D: \ My_C# _Projects \ FlowmeterConfiguration_Unity \ FlowmeterConfigurator \ FlowmeterConfigurator \ bin \ Debug '. –

ответ

1

Исключение говорит, что призма не может найти файлы DLL. Файлы .exe и .dll модулей должны находиться в одной папке (в соответствии с вашим app.config в предыдущем вопросе);

+0

Должен ли я копировать dll каждого модуля в папку, где exe-файл приложения оболочки? –

+0

Я добавил ссылки DLL модулей на проект оболочки, и мое приложение отлично работает! –

0

Исключение означает, что призма не может найти файлы DLL. Они не могут быть найдены, если разные проекты решения не строятся с той же версией Target Framework. У меня была эта ошибка, когда модуль-проект был встроен в .Net Framework 4.5.2, а Main-project - в 4.5.1. Исправить/выровнять версию Target Framework, выйти из Visual Studio, повторно открыть, перестроить. Тогда ошибка исчезла.

В основном существует множество причин для исключения.

Смежные вопросы