當使用Unity的Prism 6 WPF模塊化應用程序啓動時,Prism.Wpf.dll中的「Prism.Modularity.ModuleTypeLoadingException」被拋出。下面是異常的屏幕截圖:當Prism 6 WPF應用程序啓動時,Prism.Wpf.dll中出現'Prism.Modularity.ModuleTypeLoadingException'
正如你可以看到當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的任何實例。可能是我必須在我的應用程序的某個地方定義它?
有了這些信息,真的很難猜到發生了什麼。我建議你比較配置文件中的名字和你試圖鏈接的dll。 – Fka
你的dll和exe文件在同一個文件夾中嗎? – galakt
在D:\ My_C#_Projects \ FlowmeterConfiguration_Unity \ FlowmeterConfigurator \ FlowmeterConfigurator \ bin \ Debug文件夾中有FlowmeterConfiguration.exe和Microsoft和Prism的dll文件。 –