2016-02-20 71 views
0

當使用Unity的Prism 6 WPF模塊化應用程序啓動時,Prism.Wpf.dll中的「Prism.Modularity.ModuleTypeLoadingException」被拋出。下面是異常的屏幕截圖:當Prism 6 WPF應用程序啓動時,Prism.Wpf.dll中出現'Prism.Modularity.ModuleTypeLoadingException'

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(); 
     } 
    } 
} 

我的應用程序的解決方案包括三個項目:與棱鏡模板包創建爲棱鏡團結App和兩個模塊,每一個都與棱鏡模板包創建爲主要WPF項目棱鏡模塊。這兩個模塊都登記在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 
    { 
     . . . . . 
    } 
} 

當開始然後主窗口被顯示爲短的時間我的應用程序(小於1秒)並且該S後Hort時間間隔ModuleTypeLoadingException引發與CalibrationModule相關的錯誤。看起來像AuthorizationModule的類型被成功載入,但CalibrationModule類型的載入失敗。請幫我解決這個錯誤。

P.S.我沒有在我的應用程序中定義IModuleManager的任何實例。可能是我必須在我的應用程序的某個地方定義它?

+0

有了這些信息,真的很難猜到發生了什麼。我建議你比較配置文件中的名字和你試圖鏈接的dll。 – Fka

+0

你的dll和exe文件在同一個文件夾中嗎? – galakt

+0

在D:\ My_C#_Projects \ FlowmeterConfiguration_Unity \ FlowmeterConfigurator \ FlowmeterConfigurator \ bin \ Debug文件夾中有FlowmeterConfiguration.exe和Microsoft和Prism的dll文件。 –

回答

1

異常說棱鏡無法找到.dll文件。 您的.exe文件和模塊的.dll文件應位於相同的文件夾中(根據您在上一個問題中的app.config);

+0

我應該將每個模塊的DLL複製到shell應用程序的exe文件所在的文件夾中嗎? –

+0

我已經將模塊的DLL引用添加到了shell項目中,並且我的應用程序出色地工作了! –

0

異常說明棱鏡無法找到.dll文件。如果解決方案的不同項目不是使用相同的目標框架版本構建的,則可能不會發現這些問題。當Module-project在.Net Framework 4.5.2中生成時,我遇到了這個錯誤,而Main-project在4.5.1中。 更正/對齊目標框架版本,退出Visual Studio,重新輸入,重新生成。然後錯誤消失了。

大多數情況下,有一個例外的原因很多。

相關問題